通过结构体来读写寄存器的方法

1、首先确定要读写的寄存器个数,对应的创建一个结构体(里边创建对应个数的成员)

   (结构体的空间大小要跟寄存器所占的内存总和一样)

#define unsigned int uint32_t
typedef struct
{
uint32_t CRL;
uint32_t CRH;
uint32_t IDR;
uint32_t ODR;
uint32_t BSRR;
uint32_t BRR:
uint32_t ICKR;
}GPIO_Typedef;

2、将要访问的寄存器地址强制转化为结构体指针类型

1)、GPIOA  记为  单纯的将地址强制转换为结构体指针类型

2)、GPIOB  记为  转换为结构体指针类型之后读出七个结构体成员的数据

1)、#define GPIOA (((GPIO_Typedef *) (0x40010800)))
2)、#define GPIOB (*((GPIO_Typedef *) (0x40010C00)))

3、访问某个结构体成员的地址(某个寄存器的地址)里边存放的数据赋给无符号整型变量

void mytest(void)
{
    uint32_t a,b;
    a = GPIOA->CRL;
    b = GPIOB.CRL;
}

你可能感兴趣的:(stm32,c语言)