#define HDC_SDA_IN() {GPIOC->MODER&=~(3<<(92));GPIOC->MODER|=0<<92;} //PC9输入模式
#define HDC_SDA_OUT() {GPIOC->MODER&=~(3<<(92));GPIOC->MODER|=1<<92;} //PC9输出模式
通过参考手册,查看GPIO寄存器,如下图所示:
解释输入输出模式操作:
HDC_SDA_IN() :
GPIOC->MODER&=~(3<<(9*2)); //3的二进制表示为11,将11左移2*9=18位(由2y:2y+1确定端口9的配置位,即第19、18位),取反后与上GPIOC->MODER;此操作是使得GPIOC->MODER的19、18位寄存器清零。
GPIOC->MODER|=0<<9*2; //0左移9*2=18位,即配置位18/19置为0;此次操作实现配置端口9为输入模式
HDC_SDA_OUT() :
GPIOC->MODER&=~(3<<(9*2)); //3的二进制表示为11,将11左移2*9=18位(由2y:2y+1确定端口9的配置位,即第19、18位),取反后与上GPIOC->MODER;此操作是使得GPIOC->MODER的19、18位寄存器清零。
GPIOC->MODER|=1<<9*2; //01左移9*2=18位,即配置位19、18置为01;此次操作实现配置端口9为输出模式