STM32F4-学习笔记(一)—利用指针访问寄存器
利用指针访问寄存器
具体包含以下4个步骤:1、类型的强制转换;2、指针的基类型;3、指针的解引用;4、利用define关键字取别名。如下:
#define GPIOA_MODER *(volatile unsigned int*)(0x40020000UL)
利用结构体指针访问寄存器组
定义结构体模板
struct GPIO
{
volatile unsigned int MODER;
volatile unsigned int OTYPER;
volatile unsigned int OSPEEDR;
volatile unsigned int PUPDR;
volatile unsigned int IDR;
volatile unsigned int ODR;
volatile unsigned int BSRR;
volatile unsigned int LCKR;
volatile unsigned int AFR[2];
}
取别名
typedef struct
{
volatile unsigned int MODER;
volatile unsigned int OTYPER;
volatile unsigned int OSPEEDR;
volatile unsigned int PUPDR;
volatile unsigned int IDR;
volatile unsigned int ODR;
volatile unsigned int BSRR;
volatile unsigned int LCKR;
volatile unsigned int AFR[2];
}GPIO_TypeDef;
定义结构体变量
struct GPIO GPIOA; //方式一
struct GPIO *pGPIOA;
GPIO_TypeDef GPIOA;//方式二
GPIO_TypeDef *pGPIOA;
寄存器组定义
#define GPIOA ((GPO_TypeDef*)0x40020000UL)