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模式寄存器 地址偏移: 0x00unint32_t OTYPER; //*GPIO输出类型寄存器 地址偏移: 0x04unint32_t OSPEEDR; //*GPIO输出速度寄存器 地址偏移: 0x08unint32_t PUPDR; //*GPIO上拉/下拉寄存器 地址偏移: 0x0Cunint32_t IDR; //*GPIO输入数据寄存器 地址偏移: 0x10unint32_t ODR; //GPIO输出数据寄存器 地址偏移: 0x14unint64_t BSRRL; //GPIO置位/复位寄存器低16位部分 地址偏移: 0x18unint64_t BSRRH; //GPIO置位/复位寄存器高16位部分 地址偏移: 0x1Aunint32_t LCKR; //GPIO配置锁定寄存器 地址偏移: 0x1Cunint32_t AER[2]; //GPIO复用功能配置寄存器 地址偏移: 0x20-0x24}GPIO TypeDef;
使用结构体指针访问寄存器