stm32程序执行完main函数然后去干嘛了?之后的中断为何不能响应???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32程序执行完main函数然后去干嘛了?之后的中断为何不能响应???相关的知识,希望对你有一定的参考价值。

外部中断:main函数里语句
EXTI_PA0_Config(); /* wait interrupt */ while(1) 这样是可以正常中断的。
外部中断:main函数里语句,只是去掉了无限循环而已,为何不能响应中断了呢???
EXTI_PA0_Config(); /* wait interrupt */ while(1) 这样是无法中断的。
第二个写错了,就是去掉那个while(1) ;
求大神解答。。。

所有单片机 包括STM32 启动流程是重boot开始 boot就是初始化堆栈 中断向量表 之类一系列的单片机系统环境的参数,之后跳到main函数 main函数一般是一个死循环 死循环中执行一些操作 期间有中断的话就跳转到中断服务函数执行 如果main函数不是死循环 就直接执行一次main函数 结束单片机的操作追问

你的回答太给力了,就是你说的这样。
我又发现了2个问题:
1,主函数里设置定时器产生PWM,一次执行完后按理说单片机结束工作了,但是还是有PWM产生。只是主机停止工作了吗?
2,中断就是为了节省CPU,这么说来使用中断还得一直等待,还不如直接循环查询某个端口呢?真是感觉不可思议。

追答

while(1)单片机是一只工作的 没有停止 等待中断的发生
中断是节省CPU的 当你的主程序有很多事情要做的时候直接循环查询就很浪费CPU不是一个很好的办法

参考技术A 关注这个问题

Go程序执行顺序

  1. 进入main包,执行import导入操作,例如需要导入fmt包,则进入fmt包,判断fmt包依赖,进而导入依赖包;

  2. 依赖包只会被导入一次,导入依赖包之后,就会执行包常量和变量的初始化,然后执行依赖包中的init函数;

  3. main包中的依赖包都导入完成后,执行main包常量和变量的初始化,然后执行main包中的init函数,然后执行main函数

  4. 最后由main函数返回,结束Go程序执行

本文出自 “linux相关” 博客,请务必保留此出处http://diadia.blog.51cto.com/5440926/1747450

以上是关于stm32程序执行完main函数然后去干嘛了?之后的中断为何不能响应???的主要内容,如果未能解决你的问题,请参考以下文章

35岁以上的软件测试员,都去干嘛了?

STM32F103外部中断编程

Keil MDK仿真调试STM32的时候直接进入SystemInit函数

STM32的SWD调试进不了main函数

嵌入式程序执行完之后去哪儿了呢?

STM32 UCGUI 移植完后 如何做成库 帮帮在下