你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32f1内存映射问题

[复制链接]
旷宇 提问时间:2024-8-13 12:28 / 未解决

在STM32F10x参考手册中,0X4000 0000地址开始是用作APH1的寄存器,而在Cortex M3编程手册中0X4000 0000-0X400F FFFF的1M空间用作位带区,这两者之间怎么去理解?

收藏 评论4 发布时间:2024-8-13 12:28

举报

4个回答
xmshao 回答时间:2024-8-13 14:17:15
STM32芯片里往往会根据总线协议及特征对整个地址空间做粗线条的划分和命名。


比方你提到的0x4000 0000开始的一段空间,称之为APB1域。同时,从0x4000 0000开始


的1MB空间又有个特殊的名字,即位带区。


所谓位带区,就是该空间的任何1bit都可以在另一对应的存储空间即位带别名区找到对应的字空间。


对位带别名区的某个字word写1或清零等效于对位带区的相应位bit进行写1或清零。


从0x4000 0000开始的1MB位带区空间 所对应的 别名区 的地址空间是从0x4200 0000开始的32MB空间。


也就是说,同一地址空间基于不同的标准或功用起了两个不同的命名而已。
旷宇 回答时间:2024-8-13 20:42:54

xmshao 发表于 2024-8-13 14:17
STM32芯片里往往会根据总线协议及特征对整个地址空间做粗线条的划分和命名。</p>
<p>

是不是可以这样理解:ARM公司在设计cortex-M3内核的时候,是将0X4000 0000起始的1M空间设置为位带区,0X4200 0000开始的32M字节空间设置魏位带别名区;而芯片具体设计的时候,芯片公司可以参照这样的设计,也可以进行修改;而ST公司在设计STM32F103芯片的时候没有按照内核设计,而是把0X4000 0000起始的存储空间设计成了APH1的寄存器区。

xmshao 回答时间:2024-8-14 09:47:33

旷宇 发表于 2024-8-13 20:42
是不是可以这样理解:ARM公司在设计cortex-M3内核的时候,是将0X4000 0000起始的1M空间设置为位带区 ...

[md]是的。下面文章可以参考。

STM32G4系列是否支持位带操作

https://mp.weixin.qq.com/s?__biz=MzA3OTIxMjQyNQ==&mid=2650951296&idx=1&sn=35069d09aa782259e11bcee45f566cb9&chksm=84401466b3379d70c1741c5ef899cb18ebdf71e134b5d5ae999ab5981e10b9e8cc79e56d20d7&token=605706777&lang=zh_CN#rd

Enoch11 回答时间:2024-8-17 11:11:39

位带区可以对一个bit的数据进行读写,而传统的是读取32位数据,修改其中的一位再写回寄存器

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版