页面加载中,请稍候
来源:电子工程世界发布时间:2023-01-051783浏览
询问 AI最近看了一个内容:为什么复位中断服务程序里面直接调用的main函数,难道所有程序都在复位中断里面执行的?

首先,Reset_Handler 是单片机的一个中断,其次,main 函数也确实被 Reset_Handler 中断调用了。那不是,main函数在中断里执行?
看到这个问题,你是否也曾想过这个问题,难道我们以前的认识错了?
说实话,我都没曾想过这个问题,我觉得绝大多数人都没有想过这个问题。所以,这里顺便分享一下这个问题的内容。
单片机的操作模式
这里的单片机,主要指 ARM Cortex-M 内核单片机。在Cortex‐M3 手册中有这么一段:

其中,开篇问题的答案,我圈出来了。
官方的在线文档也提到了相关的说明:

地址:
https://developer.arm.com/documentation/dui0552/a/the-cortex-m3-processor/exception-model/exception-types示例分析
上面圈出了答案,可能你还是蒙的,这里结合 Keil MDK + STM32 的工程代码给大家简单对比分析一下。

此时,我们进入的是特权级的Handler模式。
看到这里,想必你应该明白了。
总结
这个问题,关键点就是:复位中断(Reset_Handler)和普通中断(SysTick_Handler)的操作模式不一样。其他IDE,比如Keil、GCC等编译环境道理类似,这个问题主要在于内核,也就是由内核决定。
推荐阅读
干货|盘点PCB设计中最常见的错误,看看你中了几条?干货|如何测量电源纹波?干货|手机电池充、放电架构与流程讲解干货|靠这篇我竟然2天理解了CAN协议!
添加微信回复“进群”
拉你进技术交流群!
国产芯|汽车电子|物联网|新能源|电源|工业|嵌入式…..
在公众号内回复您想搜索的任意内容,如问题关键字、技术名词、bug代码等,就能轻松获得与之相关的专业技术内容反馈。快去试试吧!


新闻来源:电子工程世界,文中所述为作者独立观点,不代表icspec立场。更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj。
暂无评论哦,快来评论一下吧!
2026-07-20

2026-07-10

2026-06-04