举例如下。
我实在IO模拟I2C时应用的 效果可以。
下面是PB11的 11-7是因为 CRH从8开始的
#define SDA_Input() {GPIOB->CRH&=~(0x0F<<(4 * 5));GPIOB->CRH|=8<<(4 * 5);} //PB11 11-7=5
#define SDA_Output() {GPIOB->CRH&=~(0x0F<<(4 * 5));GPIOB->CRH|=3<<(4 * 5);}
下面是PB1的 1-0是因为 CRL从0开始的
#define SDA_Input() {GPIOB->CRL&=~(0x0F<<(4 * 1));GPIOB->CRL|=8<<(4 * 1);} //PB1 1-0=1
#define SDA_Output() {GPIOB->CRL&=~(0x0F<<(4 * 1));GPIOB->CRL|=3<<(4 * 1);}
当时操作PB11时误写成CRL竟然也可以 ,没来得及有追下去,有兴趣的试试, 告知一下。
STM32寄存器操作 设定 IO 方向
最新推荐文章于 2024-09-01 12:34:48 发布