aa随风而来 发表于 2017-8-24 13:25:19

STM32程序代码

GPIOA->ODR &=0XFF0F; //将第 4-7 位清 0;
看了很久还是不明白有什么意思,后面虽然有解释,但还是不明白


张亚飞 发表于 2017-8-24 13:52:47

加油

发表于 2017-8-24 13:53:02

下面两个算法是一样的,都是将bit4-7清零。&的基本运算法则:都是1时1,只要有一个为0就是0。
GPIOA->ODR &=0XFF0F;
GPIOA->ODR   =GPIOA->ODR& 0XFF0F;

aa随风而来 发表于 2017-8-24 13:58:29

安 发表于 2017-8-24 13:53
下面两个算法是一样的,都是将bit4-7清零。&的基本运算法则:都是1时1,只要有一个为0就是0。
GPIOA->ODR & ...

为什么是FF0F呢

小随风 发表于 2017-8-24 14:22:45

&是“与”运算逻辑,换成数学就是“乘法”,但是和乘法又不太一样。比如说1&1=1,1&0=0,0&0=0
ODR这个寄存器有16位,分别对应PA0-PA16,而“0xFF0F”之中的“0”正好是PA4-PA7这四个IO口
再回过头来看这个算式,GPIOA->ODR &=0XFF0F;
说的就是ODR这个寄存器与0xFF0F进行“与”运算,这个算法的意思就是在不改变其他IO口的情况下,把PA4-PA7置0
最后楼主还是好好补补基础吧,感觉你基础不行

aa随风而来 发表于 2017-8-24 14:33:59

小随风 发表于 2017-8-24 14:22
&是“与”运算逻辑,换成数学就是“乘法”,但是和乘法又不太一样。比如说1&1=1,1&0=0,0&0=0
ODR这个寄存 ...

好的,谢谢解惑

五哥1 发表于 2017-8-27 10:34:41

要看手册,知道PA4-PA7的地址,才能知道为啥用0XFF0F
页: [1]
查看完整版本: STM32程序代码