历史上的今天
今天是:2024年09月29日(星期日)
2021年09月29日 | STM32:位带操作分析
2021-09-29 来源:eefocus
传统操作:修改一个32位寄存器内值的方法是,从寄存器中取出值,修改这个值,然后再放回这个寄存器中。
位带操作:对于位带区的每一位,在位带别名区都有一个32位的地址对应,当需要修改值时,直接对该地址所指向的值进行修改。
位带区:支持位带操作的地址区,也就是说此区域可以给它起一个地址别名。
位带别名:即为上述映射到的32位地址(别名)所在区域,对这个别名地址的访问最终作用到位带区的访问上。
支持位带操作的两个内存区域是:
0X2000_0000-0X200F_FFFF(SRAM区中的最低1MB)
0X4000_0000-0X400F_FFFF(片上外设区中的最低1MB)
位带区与位带别名区之间的映射关系见下图
位带区到位带别名区的地址映射公式:

在编程中,我们会把以上公式合并成一个公式
(addr & 0xF0000000)+0x02000000+((addr & 0x00FFFFFF<<5)+(bitnum<<2))
(addr & 0xF0000000)目的是取出addr的最高位(根据映射表可知最高位非2即4),通过最高位来区分是SRAM还是片上外设,再加上0x02000000即复原了SRAM/外设位带别名区的起始地址,(addr & 0x00FFFFFF<<5)实际上是实现原式中的(A-0x20000000)*8*4,(bitnum<<2)等同于n*4.
上一篇:STM32的位带操作分析
史海拾趣
|
想在pc和device之间通过rapi进行通信,但是找不到rapi.lib 哪位兄弟有给发一个到邮箱guopeixin@yahoo.com.cn中, 先行谢过了… 查看全部问答> |
|
应届毕业生,公司要求学ecos,但是从来没有接触过,身边也没有人懂这个,在网上转了一大圈也没找到多少资料,有懂行的朋友能帮忙推荐一两本好点的书吗? 我在淘宝找了下找到了下面3本书: 《嵌入式可配置实时操作系统eCos技术及实现机制》 《嵌 ...… 查看全部问答> |
|
USB可以称得上是目前最为成功,最有优势的外设接口规范,随着时代的发展,外设的进步,USB接口规范也需要有相应的配套升级,于是所谓的“SuperSpeed USB”(超高速USB)出现了,也就是我们今天要重点介绍的USB 3.0的优势。 USB 3.0有两大最能拿得 ...… 查看全部问答> |
|
从语言进步到编程 1. 语言和编程本是两码事 分不清语言和编程的人,估计很能学得好编程。 1.1 盲从技术只能让你晕的更久 和其它事物一样,软件编程的发展也经历了从低级到高级的各个阶段。从机器代码到汇编语言,从汇编语言到高级 ...… 查看全部问答> |
|
大家编程都用什么仿真器?又一个 Jlink 固件升级后变成 unknow device 在淘宝上买了两个 J-Link V8,现在两个都已经因为固件升级变成了 unknown device. J-Link 功能强大,确实是非常不错的仿真器。 大家有没有比 J-Link 觉得更好用的仿真器呢? … 查看全部问答> |






