关于IO口程序问题

2019-07-14 16:20发布

帮忙解释两句程序,关于IO口的。作为小白,用STM32的时候一直用的是库函数,所以遇到这两句就蒙圈了,快来一波大神砸死我吧~

1. GPIOG->MODER&=~(3<<(9*2));GPIOG->MODER|=0<<9*2;
2. GPIOG->MODER&=~(3<<(9*2));GPIOG->MODER|=1<<9*2;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
DigCore
2019-07-15 12:54
GPIOG->MODER&=~(3<<(9*2));GPIOG->MODER|=0<<9*2;
运算过程:
1.数值3的二进制0000,0011那么3左移18位,即0x03000000,
2.再用运算符~来取非,即0xFCFFFFFF,
3.将寄存器GPIOG->MODER中的值读出,和0xFCFFFFFF进行位与的运算&;
假如寄存器GPIOG->MODER中的值是0x11FFFFFF,则位与的运算结果是:0x10FFFFFF,可见,最后是把偏移18位的那两个bit清零。

同理, |= 的运算结果,是把偏移18位的那一位置1.

一周热门 更多>