选自,STM32F4之寄存器实现跑马灯实验
GPIOF->MODER &=~(3<<2*9)//清零,第19位,18位的值为00
其中:~非运算,表示取反,例111111001111取反后为000000110000,方便我们计算其值。
&表示进行与运算,例1&0=0,1&1=1
|表示或运算,例1|0=1,1|1=1.
注:MODER &=B表示位MODR =MODER&B
一、GPIO 端口模式寄存器 (GPIOx_MODER) (x = A…I)
1.将18,19位清零*
- [什么要配置MODER9=01 ?Y因为此时是pin9脚,故必须配置MODER9=01 ]
第一步:先将18,19位清零,再将这两位配置为MODER9=01,通用输出模式
数字3:表示18,19位为1,即11=3,
第二步,移位:3<< 2×9:表示11向左移动18位。此时18,19位的值为11,而MODER是两位的,故显示为2×9
此时除18,19位为11.其他的30位均为0,再通过取反操作:~,可以实现将18,19位清零的作用。
我们通过查询F4芯片资料手册的187页,可以得到如下所示GPIO端口模式寄存器的表格如下所示

2.配置MODER=01,通用输出模式(将18,19位值设置位01)
GPIOF->MODER |=(1<<2*9)//置位,第19位,18位的值为01
01=1,然后左移18位,配置MODER=01,通用输出模式。
二、GPIO 端口输出类型寄存器 (GPIOx_OTYPER)

将OTYPER9配置为OTYPER9=0(输出推挽)单字节
GPIOF->OTYPER &=~(1<<9)//将第9位清零(单字节)
GPIOF->OTYPER |=(0<<9)//将第9位置零(单字节)
三、GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR)

将OSPEEDR寄存器配置为10,OSPEEDR9=10(50MHz)
GPIOF->OSPEEDR &

这篇博客详细解析了STM32F4中GPIO端口模式、输出类型、速度、上拉/下拉以及输出数据寄存器的配置,通过位操作实现对GPIO的控制,包括清零、与、或运算,以达到设置GPIO为通用输出模式、推挽输出、50MHz速度和上拉状态。
最低0.47元/天 解锁文章
1850

被折叠的 条评论
为什么被折叠?



