写这个博客着重缕清自己的思路,对基础的东西有个更好的理解。
GPIO中的常用的寄存器
GPIOx_CRH 与GPIOx_CRL : 可以配置GPIO的各种模式,进行初始化。
GPIOx_BSRR : 32位寄存器,可以写入或清除1/0
GPIOx_IDR : 低16位寄存器,读取IO的电平
GPIOx_ODR :低16位寄存器,写入IO的电平
输出模式中包含
- 通用推挽输出:可以输出高低电平
- 通用开漏输出:不能输出高电平,需要外接上拉电阻
- 复用推挽输出:复用功能时,同上
复用开漏输出:复用功能时,同上
用一幅最简单的图形来概括:
输入模式中包含
- 模拟输入模式:输入的是模拟量(用于ADC等)
- 浮空输入模式:浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定(一般用于各种通信协议)
- 上拉/下拉输入模式:比较容易理解
通过对寄存器的操作就可以实现IO口的操作了。
对IO口进行宏定义
对库函数进行宏定义
#define LED1_OFF GPIO_SetBits(GPIOB,GPIO_Pin_0)
#define LED1_ON GPIO_ResetBits(GPIOB,GPIO_Pin_0)
对寄存器进行宏定义
/* 直接操作寄存器的方法控制IO */