端口位设置/清除寄存器BSRR
端口位清除寄存器BRR
端口配置锁定寄存器LCKR
上面介绍了GPIO的8中工作模式以及GPIO的寄存器使用,那么在控制GPIO之前需要配置GPIO的工作模式,这是STM32和51单片存在区别的地方。51单片的引脚功能是确定的,而STM32的引脚都是可以复用的,程序配置GPIO的方式有两种,一种是通过库文件的方法进行配置,另一种是通过寄存器进行配置,由于库文件的配置方式比较简单,网上也有很多文章讲解,这里我以寄存器为例进行学习。
注意:STM32的所用引脚都可以用于中断
程序是基于之前创建的项目模板(寄存器版)中进行更改即可,没创建过STM32项目的小伙伴浏览之前的STM32新建模板之库文件和STM32新建模板之库文件。
更改main.c文件为一下内容即可
#include "stm32f10x.h" #include "sys.h" /*------------------------------------------------------------ 主函数 ------------------------------------------------------------*/ int main() { RCC->APB2ENR|=0X0000001c;//先使能外设IO PORTa,b,c时钟 RCC->APB2ENR |= 1 << 12; GPIOB->CRH=0X00030000; //设置GPIOB的12引脚为推挽输出 while (1) { delay_ms(100); GPIOB->ODR = ~(1 << 12); //设置12引脚输出0 delay_ms(100); GPIOB->ODR |= 1 << 12; //设置12引脚输出1 } }这是一个led闪烁的程序,编译下载运行即可。
参考文献STM32F4 GPIO八种模式及工作原理详解:https://blog.csdn.net/as480133937/article/details/98063549
STM32-GPIO详解:https://blog.csdn.net/dnfestivi/article/details/104984813
《STM32中文参考手册》