STM32 CRH和CRL记录

在进行IO口方向设置的时候经常见到如下设置方式

//IO方向设置   PC11
#define MPU_SDA_IN()  {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;}
#define MPU_SDA_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=3<<12;}

先把CRH和CRL管理 模式对照表贴出来进行说明
这里写图片描述
从同种可以看出CNF表示是输入输出不同模式下的状态,CNF代表的位为31:30或27:26或23:22……管理输入输出模式的是MODE位分别为29:28或25:24或21:20………….,在不同IO口上CNF和MODE共同占用一个十六进制的’F’也就是上述中的空出来的’0’。
下面说明为啥在使用PC11的时候是;

GPIOC->CRH&=0XFFFF0FFF;

CRH和CRL其实功能是相同的,只是CRH管理引脚的高8位为Pin8-16,CRL管理引脚的低八位为Pin0-7,每个IO端口的位占用占用CRL或CRH的4个位,4个位中高2位为CNF低两位为MODE,那么在CRL中Pin0-7八个IO口每个4位占用4*8=32位刚好为0xFFFFFFFF,从低位到高位分别为0xFFFFFFF0代表0号IO口,0xFFFFFF0F代表1号IO口,0xFFFFF0FF代表2号IO口,,,,,,,,,,,,
在CRH中Pin8-15八个IO口每个4位占用4*8=32位刚好为0xFFFFFFFF,从低位到高位分别为0xFFFFFFF0代表8号IO口,0xFFFFFF0F代表9号IO口,0xFFFFF0FF代表10号IO口,0xFFFF0FFF代表11号IO口,,,,,,,,,,,

猜你喜欢

转载自blog.csdn.net/andrewgithub/article/details/79492680
今日推荐