最近看了硬汉分享的一个内容:为什么复位中断服务程序里面直接调用的main函数,难道所有程序都在复位中断里面执行的?
首先,Reset_Handler 是单片机的一个中断,其次,main 函数也确实被 Reset_Handler 中断调用了。那不是,main函数在中断里执行?
看到这个问题,你是否也曾想过这个问题,难道我们以前的认识错了?
说实话,我都没曾想过这个问题,我觉得绝大多数人都没有想过这个问题。所以,这里顺便分享一下这个问题的内容。
单片机的操作模式
这里的单片机,主要指 ARM Cortex-M 内核单片机。
要回答开篇那个问题,就要提到单片机的操作模式,这里以 Cortex‐M3 单片机为例,Cortex‐M3 支持两种模式和两个特权等级。
两种模式:
Handler 模式
Thread 模式
两个等级:
特权级
用户级
在 Cortex‐M3 手册中有这么一段:
其中,开篇问题的答案,我圈出来了。
官方的在线文档也提到了相关的说明:
地址:https://developer.arm.com/documentation/dui0552/a/the-cortex-m3-processor/exception-model/exception-types
示例分析
上面圈出了答案,可能你还是蒙的,这里结合 Keil MDK + STM32 的工程代码给大家简单对比分析一下。
1.进入Reset_Handler中断我们在线调试时,复位状态,进入 Reset_Handler 复位中断:
此时,就是文档中提到的:在复位后,处理器进入特权级的Thread模式。
2.进入SysTick_Handler中断当我们进入普通中断,比如这里进入 SysTick_Handler 时钟滴答中断:
此时,我们进入的是特权级的Handler模式。看到这里,想必你应该明白了。
总结
这个问题,关键点就是:
复位中断(Reset_Handler)和普通中断(SysTick_Handler)的操作模式不一样。
其他IDE,比如Keil、GCC等编译环境道理类似,这个问题主要在于内核,也就是由内核决定。
可能你从来没有关心过这个问题,当然,我们也很少遇到与之对应的问题。
这是一个不是问题的问题,不了解也没关系,你今天看到了也算进一步了解了 Cortex-M 单片机内核的一个知识点。
上一篇:单片机固件中加入版本信息的方法
下一篇:玩转单片机得弄明白DMA原理
推荐阅读最新更新时间:2024-11-08 11:58
推荐帖子
- 【NUCLEO-L452RE测评】NUCLEO-L452RE快速入门之mbed的使用
- 首先感谢eeworld的支持,很荣幸兑换了一块STM32Nucleo-64board的板子,白色的板子很漂亮,很喜欢这样的风格。说到ST官方出的Nucleo板子,最早接触是14年,也是活动低价买了一块,当时连51都不熟,所以买回来也就吃灰了,后来那块板子就用来下载,说实话,Nucleo板子自带的st-link下载器真的很实用,还支持usb转串口,省去了开发时需要连接一大堆线的麻烦。因为实习的单位是做科技教育的,使用的平台是Arduino,相信很多人都有听说过,不过我也是去
- 11044755967 stm32/stm8
- 请教下在一对双绞线上同时传输电源的RS485信号的电路
- TI有一篇文档描述了在一对双绞线上同时传输电源了RS485信号:http://www.ti.com/lit/ug/tidu993/tidu993.pdf,正好家里有传感器当时只留了电源线想用树莓派采集它的信号,试着用软件模拟了下。电路图如下:ZFG1模拟了RS485信号:输入频率为19200Hz的±5V方波型号R1是信号输出端:接到示波器BR4是24V输出端:接到示波器A这个电路能正常的分离24V电源和RS485信号,如下图(红线A通道,输出了24V,紫线B通道,RS485方波输出正
- msmmbl 模拟电子
- 【报名中】RISC-V安全之地|Microchip 安全解决方案系列研讨会
- MultiZone安全性是RISC-V的首个Linux安全之地。MultiZone演示将展示如何保护混合关键系统的确定性行为,其中Linux和实时系统在同一PolarFire器件中。对于需要在不受信任的平台上进行可信工作负荷的安全关键型应用,MultiZone安全性为多个安全区提供了由软件定义的硬件强制隔离,将数据、程序和外设完全隔离开。与传统厚重的管理者解决方案相比,MultiZone安全性是完全独立的。它呈现了一个极其有限的攻击面(2KB),可以进行正式验证,无
- EEWORLD社区 嵌入式系统
- TI DSP--cmd文件
- cmd文件是使用TI芯片很重要的一步,了解它,能对整个软件系统的分布,对芯片本身资源的使用有一个更清晰的了解,从而达到优化系统的目的。CMD文件一句话来表达:定义芯片内部硬件资源和分配管理软件代码的一个配置文件。因此从cmd文件的组织上你能看到两个部分:1定义硬件资源,2管理软件代码(非原创,总结与网络)用户通过编写CMD文件,来管理、分配系统中的所有物理存储器和地址空间。CMD文件,全名连接命令文件(linkercommandfiles),以后缀.cmd结尾。CMD文件其实就是
- Jacktang DSP 与 ARM 处理器
- XILINX SPARTAN-6 FPGA SP601 评估套件限时销售
- http://china.xilinx.com/products/devkits/EK-S6-SP601-G.htm销售价格249美元!提供业界信息,方便广大同仁XILINXSPARTAN-6FPGASP601评估套件限时销售顶!
- eeleader FPGA/CPLD
- 【Follow me第二季第2期】任务汇总
- UNOR4WIFI视频:【Followme第二季第2期】视频展示-EEWORLD大学堂代码:Follow_me第二季第二期代码-嵌入式开发相关资料下载-EEWORLD下载中心文档:【Followme第二季第2期】+搭建环境并开启第一步Blink/串口打印HelloEEWorld!-DigiKey得捷技术专区-电子工程世界-论坛【Followme第二季第2期】+LED矩阵、DAC、放大器、AD-DigiKey得捷技术专区-电子工程世
- 王嘉辉 DigiKey得捷技术专区
设计资源 培训 开发板 精华推荐
- 用于电池充电器的 1.8V、2.5V DC 至 DC 单路输出电源
- max78000试验板
- 使用 Richtek Technology Corporation 的 RT8876A 的参考设计
- LTC1261CS8 -1.24V 发生器的典型应用电路,用于 4mA-20mA 到 0V-5V 的转换
- LT1172HVIQ、5V/1.25A 正电流升压降压转换器的典型应用
- LTC2992HMS-1 双路宽范围功率监视器的典型应用
- ADP1720-EP 50mA高压微功率线性稳压器5.0V固定输出电压典型应用电路
- 4驱控制板
- AM6TW-2403DZ ±3.3V 6 瓦单输出 DC/DC 转换器的典型应用
- MIKROE-3309,基于 AD9833 低功耗可编程波形发生器的波形点击板