55问答网
所有问题
stm32为什么给有些寄存器赋值确不会影响其他位
如题所述
举报该问题
推荐答案 2017-05-06
IDR寄存器的数据时实时反映IO口的状态,当然设置ODR,IO的状态也跟着改变,除非强制人为地设置。 比如,ODR设置为1,而强制将对应的IO口接地,这时IDR就和ODR不一致;或者将ODR设置0,而强制降对应IO口接VCC,这时也不一致。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://55.wendadaohang.com/zd/IQLGLc8LIRF4FILeFF4.html
其他回答
第1个回答 2019-03-24
因为第一句和第二句是一个整体啊。你想想如果原来这两位的值是0xff,如果没有第一句清零,那第二句不就没有作用了么?因为0xff
|
0x38的结果还是0xff而得不到想要的0x38。
c语言基础还有待提高哦~出现这个问题是你对位运算掌握不好的原因。
相似回答
关于
stm32的
问题:像GPIOA->CRH&=0XFFFFFFF0; GPIOA->CRH|=0X00000003...
答:
|是“或”运算,用来设置
寄存器
或者变量的某些位为1而
不影响其他位
的状态,比如X|=0x0F,这样X的第四位被设置为1而高四位不受影响。&是“与”运算,用清零寄存器或者变量的某写位而不影响其他位的状态,比如X&=0xF0,这样X的高四位保持原样,但低四位被清零了。如果X=0xF0,那就是把X高四位...
stm32
可以直接
给寄存器赋值
吗
答:
可以啊
,只要是标注可写功能的寄存器都是可以直接给他赋值的。就相当与配置寄存器来改变功能。
stm32
位操作
为什么
用或等于等起他复合
赋值
语句
答:
为了不
影响其他
的位的值,所以用了|=。当然,若十分熟悉,也是可以用的,就比如,51单片机,初始化定时器0,TMOD = 0X01;但当需要在其他地方用到定时器1时,你是否会TMOD = 0X10;呢,那就错了,这样定时器0方式被更改,可能不工作了。于是用TMOD |= 0X10;最终TMOD = 0X11;所以建议都用|=的...
stm32
配置
寄存器
之前
为什么
要先清零??直接配置不是也
不影响其他位
吗...
答:
因为第一句和第二句是一个整体啊。你想想如果原来这两位的值是0xFF,如果没有第一句清零,那第二句不就没有作用了么?因为0xFF | 0x38的结果还是0xFF而得不到想要的0x38。C语言基础还有待提高哦~出现这个问题是你对位运算掌握不好的原因。
关于
STM32的
GPIO
赋值
,谁来帮我解释一下,谢谢。
答:
因为你写
寄存器
时,有可能只是操作寄存器中的某一位的值,而
其他位
不能改变,所以用到了“|”。0x07表示bit0、1、2
的值赋
1.
大家正在搜
stm32给寄存器赋值
stm32有多少寄存器
stm32f103寄存器
stm32f103寄存器个数
stm32常用寄存器
stm32寄存器数量
stm32寄存器地址在哪看
stm32寄存器教程
stm32寄存器版本