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

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;
}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值