如何访问寄存器


访问寄存器是CPU执行程序的基础,每种CPU架构都有其特定的寄存器集合和访问方式。

方式一:对地址进行宏定义

#define GPIOA_BASE ((unsigned int)0x48000000)
#define GPIOA_ODR  (GPIO_BASE + 0X14)
//读操作
val1 = *(unsigned int*)GPIOA_ODR
//写操作
*(unsigned int*)GPIOA_ODR = val2

方式二:用结构体封装寄存器

typedef struct{
	uint32_t MODER;
	uint32_t OTYPER;
	uint32_t OSPEEDR;
	uint32_t IDR;
	uint32_t ODR;
	uint32_t BSRR;
	uint32_t LCKR;
}GPIO_TypeDef;

//定义首地址
#define GPIOA_BASE ((unsigned int)0X48000000)
#define GPIOA ((GPIO_TypeDef *)GPIOA_BASE)
//访问方式
//这行代码是在操作GPIO端口的输出数据寄存器,而不是设置内存地址。
//0x14是作为数据被写入到寄存器中,以控制GPIO引脚的输出状态。
GPIOA->ODR = 0x14;

相关推荐

  1. 如何访问寄存器

    2024-06-17 18:54:07       8 阅读
  2. STM32-寄存器和HAL库以及如何使用

    2024-06-17 18:54:07       26 阅读
  3. C语言什么是寄存器变量?如何实现?

    2024-06-17 18:54:07       17 阅读
  4. cuda 如何计算每个线程分配了多少寄存器

    2024-06-17 18:54:07       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-17 18:54:07       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-17 18:54:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-17 18:54:07       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-17 18:54:07       20 阅读

热门阅读

  1. 在Ubuntu上配置和设置防火墙UFW

    2024-06-17 18:54:07       7 阅读
  2. 网站为什么被攻击

    2024-06-17 18:54:07       8 阅读
  3. 充电学习—4、一次完整的调试

    2024-06-17 18:54:07       9 阅读
  4. 喜马拉雅项目调整

    2024-06-17 18:54:07       6 阅读
  5. 胡说八道(24.6.16)——数字电子技术以及通信杂谈

    2024-06-17 18:54:07       7 阅读
  6. Docker

    2024-06-17 18:54:07       4 阅读
  7. vue中ref与$parent/$children⽗⼦组件通信例子

    2024-06-17 18:54:07       6 阅读
  8. 微信小程序的常用api

    2024-06-17 18:54:07       5 阅读