仅供个人学习使用
STM32 的每个 IO 端口都有 7 个寄存器来控制。分别是:
- 配置模式的 2 个 32 位的端口配置寄存器 CRL 和 CRH;
- 2 个 32 位的数据寄存器 IDR 和 ODR;
- 1 个 32 位的置位/复位寄存器BSRR;
- 1个 16 位的复位寄存器 BRR;
- 1 个 32 位的锁存寄存器 LCKR。
CRH 和 CRL
在固件库开发中,操作寄存器 CRH 和 CRL 来配置 IO 口的模式和速度是通过 GPIO 初始化函数完成:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
这个函数有两个参数,第一个参数是用来指定 GPIO,取值范围为 GPIOA~GPIOG。第二个参数为初始化参数结构体指针,结构体类型为 GPIO_InitTypeDef。其定义如下:
typedef struct
{ uint16_t GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;
结构体 GPIO_InitStructure 的第一个成员变量 GPIO_Pin 用来设置是要初始化哪个或者哪些 IO 口;第二个成员变量 GPIO_Mode 是用来设置对应 IO 端口的输出输入模式,有八个可选值,在固件库中是通过枚举类型定义:
typedef enum
{ GPIO_Mode_AIN = 0x0, //模拟输入
GPIO_M


3万+

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



