STM32F103 GIPO口的寄存器 GRH、CRL、ODR理解与使用___2
程序员文章站
2022-06-22 22:42:42
STM32F103 GIPO口的寄存器 GRH、CRL理解与使用(这篇文章是接我上一篇文章的)https://blog.csdn.net/ddddd_y/article/details/107915757在这里我们可以看到,CNF是一个控制这个io口实际上输出的是什么输出,然后我们在回到这里8<<12 = 0x80 =10 00 … 00控制寄存器的MODE是输入模式然后10 在这里决定的是输入模式的类型。这里的8<<12 就直接让io口表达的是 输入模式:上拉...
STM32F103 GIPO口的寄存器 GRH、CRL理解与使用
(这篇文章是接我上一篇文章的)
https://blog.csdn.net/ddddd_y/article/details/107915757
在这里我们可以看到,CNF是一个控制这个io口实际上输出的是什么输出,然后我们在回到这里
8<<12 = 0x80 =10 00 … 00控制寄存器的MODE是输入模式
然后10 在这里决定的是输入模式的类型。
这里的8<<12 就直接让io口表达的是 输入模式:上拉/下拉输入。大概就是这个意思。
三、GPIOX->ODR|=1<<X;这个用法的使用
ORD 这个用法也是基于CRL和CRH的基础之上的,在GPIO口里面应该是控制输出的是高电平和低电平的。举个例子:
假如我现在设置的CRL|=0X3000 0000 是推挽输出。
比如我想输出 GPIOB 的pin7是高电平就直接GPIOB->ODR|=1<<7;
设置的CRL|=0X0300 0000 是推挽输出。我想输出 GPIOB 的pin6是高电平就直接GPIOA->ODR|=1<<6;
低电平就只需要将1改为0,GPIOX->ODR|=0<<X
如果是CRL|=0X8000 0000 讲的就不是推挽输出,而是上拉下拉 , 1<<7 上拉,也输出高电平。
所以其他也是如此,可以很好的区分。
本文地址:https://blog.csdn.net/ddddd_y/article/details/107917109