55问答网
所有问题
stm32的系统时钟初始化中的使用外部晶振的话要对CR置1,为什么是要RCC->CR|=0X00010000; 这样赋值的
为什么不是RCC->CR = 0X00010000; 而要RCC->CR |= 0X00010000; STM32菜鸟,刚开始看,求各位大哥赐教
举报该问题
推荐答案 推荐于2018-04-13
RCC->CR |= 0X00010000; 相当于是RCC->CR = RCC->CR | 0X00010000;
也就是将RCC->CR原来的值读取出来,然后和0X00010000进行位或,结果重新赋给RCC->CR。
其作用是只修改了RCC->CR中对应的bit位,即bit16置为1,其他位保持原值不变。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://55.wendadaohang.com/zd/QFI8GLIee.html
其他回答
第1个回答 推荐于2016-07-02
如果是RCC->CR = 0X00010000,这样虽然对那个位设置为1,但是其他位都被清零了,这样你的设置还算正确吗?如果用RCC->CR |= 0X00010000,这是逻辑OR操作,把对应的位设置1但没有影响其他位,这算不算正确?
举个例子,假设一个8位变量Z=0x35,现在要把最高位设置为1,那么结果X应该是0xB5,如果你只是简单的Z=0x80的话,那结果就是Z真的变成0x80了;但如果是Z|=0x80,那就得到正确的结果。本回答被提问者采纳
第2个回答 2013-02-01
因为你开启外部时钟不能影响到其他设置。用赋值改变整个寄存器的值,用“与”只改变该位的值。当然你也可以这么写RCC->CR=1<<16;
相似回答
...像是
RCC
_CR中设置其第16位
,为什么
只要RCC->
CR|=0x
00010000
答:
注意
0x,
表示这是十六进制的嘛,一个十六进制数表示4个二进制数,于是8位十六进制的数左数第四位的1表示二进制的第16位(0~31)。‘|’在C语言里是“或”的意思,由于原来
RCC
->
CR的0
~31位均为0,“或”什么就是什么。望采纳!!!
RCC
->
CR |=
(uint
32
_t)
0x
00000001
什么
意思
答:
您好,这样的:RCC->
CR |=
(uint32_t)0x00000001 就
是RCC
->
CR=RCC
->CR|(uint32_t)0x00000001 |是按位或,最后结果是把RCC->CR二进制最后位
置1
。
rcc是
一个结构体structs指针,他指向
cr
这个成员变量,至于具体是
什么,
就要看程序上面怎么定义的了。
STM32
第三章-
系统时钟
配置
答:
在615行代码中,这个配置过程达到高潮,宏定义如
RCC
_
CR
_HSEON(0x00010000)标记了HSE时钟源的启用。总的来说,启动时的SystemInit函数启动了这场时钟设置的盛宴,而 PLL和SetSysClock则共同构建了
系统的时钟
架构。虽然在工程模板中通常无需自行进行这些配置,但理解时钟树的内在逻辑,对于深入掌握
STM32
F4...
STM32
问题
答:
RCC和
CR都是
在"
stm32
f10x.h"中定义的常量:RCC定义为一个struct,表示RCC中所有寄存器的最低地址 CR是RCC的struct的一部分,表示相对于最低地址的偏移地址 所以RCC-〉CR大致翻译过来就是RCC+CR的位置 比如RCC定义为0x20000000
,CR是RCC
中第五个int的变量,那么值就是 0x20000000 + 4 * 0x4(一...
谁知道
STM32
怎么设置寄存器来用PLL做
系统时钟
答:
RCC
->
CR=0x
10000;//使能外部高速时钟 8Mhz RCC->CFGR
=0x1;
//使用HSE做
系统时钟
RCC->CFGR=0x1D0000;//设置PLL9倍频HSE分频1输入 RCC->CR=0x1000000;//使能PLL RCC->CFGR=0x2;//设置PLL做系统时钟
大家正在搜
stm32为什么要两个晶振
stm32用什么晶振好
stm32外部晶振不起振
stm32 16m晶振
stm32内部晶振
stm32内部晶振挂掉了
stm32h750晶振
stm32 无源晶振
stm32官方晶振
相关问题
STM32中怎么设置时钟控制寄存器的各个位的值,像是RCC_...
RCC->CR|=1<<16是什么意思
stm32赋值问题,求教下这两句启动时钟的赋值方式
STM32RCC初始化问题
stm32启动的时候默认的是哪个时钟,是RC还是外部晶体?何...
stm32寄存器版为什么要注销时钟初始化函数
系统时钟初始化的目的?