寄存器映射

本文介绍了寄存器映射的概念,特别是在Block2区域的片上外设设计中如何通过4字节单元的地址控制外设工作。详细讨论了通过绝对地址访问内存单元,如GPIOB的ODR寄存器,以及如何利用C语言的指针操作进行访问。同时,还探讨了使用寄存器别名的方式来更直观地访问内存单元。
摘要由CSDN通过智能技术生成

寄存器映射

1.寄存器映射

在Block2这块区域,设计的是片上外设,它们以4个字节为1个单元,共32位,每一个单元对应不同的功能,当控制这些单元时,就可以驱动外设工作,可以找到每个单元的起始地址,然后通过C语言指针的操作方式来访问这些单元。


根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是寄存器。给已经分配好地址的,有特定功能的内存单元取别名的过程就是寄存器的映射。

2.通过绝对地址访问内存单元

GPIOB端口的输出数据寄存器ODR的地址是0x4001 0c0c,ODR寄存器是32位,低16位有效,对应16个外部IO,写0/1对应的IO输出低/高电平

代码如下:

//通过C语言指针的操作方式,让GPIOB的16个IO都输出高电平
*(unsigned int*
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
存储器映射是为物理内存按照一定的编码规则分配地址的行为,由芯片厂商或用户规定,用户不能随意更改。存储器映射将程序存储器、数据存储器、寄存器和I/O端口排列在同一个顺序的地址空间内,以便进行访存操作。\[1\]\[2\] 寄存器映射是给已经分配好地址的具有特定功能的内存单元取别名的过程。通过给这些内存单元取别名,即寄存器,可以更好地区分其功能并方便后续的程序开发。例如,通过寄存器映射,可以将一个内存单元的地址0x4001 1010取别名为GPIOC_BSRR,并且这个寄存器的地址就是0x4001 1010。这样的映射过程就是寄存器映射。\[3\] 因此,存储器映射寄存器映射都是为了方便对内存单元进行访问和操作,其中存储器映射是为整个物理内存分配地址,而寄存器映射是为具有特定功能的内存单元取别名。 #### 引用[.reference_title] - *1* [【嵌入式系统】存储器映射寄存器映射原理](https://blog.csdn.net/FRIGIDWINTER/article/details/106826511)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [3 . 存储器映射寄存器映射](https://blog.csdn.net/weixin_41043617/article/details/116034629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值