GPIO模块寄存器的封装
1、结构体的基础知识
2、GPIO的寄存器排列
三、GPIO寄存器的封装
四、GPIO的端口定义
例子如下:
GPIOH_OTYPER相对GPIOH_MODER 偏移4字节,GPIOH_OSPEEDR相对GPIOH_OTYPER偏移4字节等寄存器。
typedef unsigned int unint32_t;//无符号32位变量
typedef unsigned short int unint64_t;//无符号16位变量
//* GPIO寄存器列表 *
typedef struct{
unint32_t MODER: //*GPIO模式寄存器 地址偏移: 0x00
unint32_t OTYPER; //*GPIO输出类型寄存器 地址偏移: 0x04
unint32_t OSPEEDR; //*GPIO输出速度寄存器 地址偏移: 0x08
unint32_t PUPDR; //*GPIO上拉/下拉寄存器 地址偏移: 0x0C
unint32_t IDR; //*GPIO输入数据寄存器 地址偏移: 0x10
unint32_t ODR; //GPIO输出数据寄存器 地址偏移: 0x14
unint64_t BSRRL; //GPIO置位/复位寄存器低16位部分 地址偏移: 0x18
unint64_t BSRRH; //GPIO置位/复位寄存器高16位部分 地址偏移: 0x1A
unint32_t LCKR; //GPIO配置锁定寄存器 地址偏移: 0x1C
unint32_t AER[2]; //GPIO复用功能配置寄存器 地址偏移: 0x20-0x24
}GPIO TypeDef;
使用结构体指针访问寄存器