打印
[应用相关]

MCU运行原理-寄存器访问

[复制链接]
549|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tfqi|  楼主 | 2024-2-2 17:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如今,mcu应用在很多领域中,如车载平台、物联网、家电、工业控制等等,作为嵌入式软件开发人员,不仅要懂得如何使用mcu,更要只能mcu在运行时,硬件里面到底发生了什么,这样更利于在遇到问题时定位和分析问题;
以STM32为例,在软件中执行这些代码的时候,硬件里面会发生什么呢?

uint32t reg_addr;
volatile uint32t tmp;
int main() {
  reg_addr = 0x40013000;
  tmp = (uint32t *)reg_addr;
  return 0;
}
1 首先,编译器会将代码编译成对应的指令,存放在hex文件中;

2 hex会存放在flash中;

3 在上电时,硬件会将flash中的代码加载一部分到SRAM中;

4 加载完成之后,cpu开始取指令;(下图中的红色路径)

5 当cpu执行到第5行代码对应的指令时,通过System总线发起访问请求;

6 硬件仲裁结构将请求转到寄存器地址对应的SPI1模块;(下图中的红色路径)

7 SPI1模块返回寄存器数据,CPU完成寄存器读操作;


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/a752109494/article/details/135763678

使用特权

评论回复
沙发
tpgf| | 2024-4-8 11:25 | 只看该作者
直接调用库函数的话 不用太在意底层的操作了吧

使用特权

评论回复
板凳
heimaojingzhang| | 2024-4-8 12:40 | 只看该作者
有些寄存器是可读不可写入或者可读可写的 这个要注意一下

使用特权

评论回复
地板
EmmaTT| | 2024-4-8 14:27 | 只看该作者
可读不可写的寄存器是做什么用的

使用特权

评论回复
5
paotangsan| | 2024-4-8 19:46 | 只看该作者
所有外设模块的操作流程都是这样的吗

使用特权

评论回复
6
keaibukelian| | 2024-4-8 20:56 | 只看该作者
了解这个原理 有利于我们编程的时候避开错误操作区域

使用特权

评论回复
7
guanjiaer| | 2024-4-8 22:41 | 只看该作者
如何根据外在表现判定内部发生了什么问题呢

使用特权

评论回复
8
观海| | 2024-4-8 23:51 | 只看该作者
有米有办法在软件的运行过程中实现对寄存器的实时监控啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

3317

帖子

4

粉丝