[讨论] 弱弱的问一个关于定时器中断的问题。。。。。。

Ben讨厌苦咖啡   2015-6-25 10:58 楼主
比如我写一个程序~设定了5s进一次定时器中断。

但是我程序main的整体架构是:





初始化

初始化

定时器设定

使能中断



while(1)主循环

{

。。。。。。

}

这样子



那么 程序逐级执行

执行到while(1)里面程序就一直循环了



那么在这个一直循环的过程中,程序还会定时按照5s进入到定时器中断执行吗???



那么程序执行的思路是 while(1)和定时器中断里面的东西同时执行吗??



还是说 执行while(1)过程中 突然进入定时器中断 执行中断里面的东西 然后执行完了再回到while(1)继续执行呢???



谢谢!

回复评论 (6)

中断就是打断正常的执行程序,转而去执行中断服务子程序,执行完后再转回来执行被打断的程序。
点赞  2015-6-25 11:27
5S时间到就产生中断,停下while(1)中的工作,并保存当前寄存器状态,然后自动进入中断服务程序了。中断执行完后再恢复中断前的状态继续执行while(1)。
这孩子,成熟的象征,理智的典范。
点赞  2015-6-25 12:13
其实我觉得您没必要用while(1)这个死循环,msp430中如timerA有寄存器TACTL中就可以设置clock source,Up mode,分频等等。如Up mode可以累积计数。这个您仔细看下datasheet。
点赞  2015-6-25 12:52
关键的一点说道了就行了,定时器可以在没有cpu的情况下运行,等到了5秒,去给cpu一个中断请求
点赞  2015-6-25 14:57
执行while(1)过程中 突然进入定时器中断 执行中断里面的东西 然后执行完了再回到while(1)继续执行呢???
——这个是正解,中断与while(1)里的东西交替执行,中断执行期间While(1)里的程序会被暂停。所以有说法就是中断服务越短越好。
实时性要求不是那么高的情况下,可以在中断里放一些标志位处理语句,然后在While(1)里面放一些周期很短的轮询语句,如果标志位变了,那么执行相应的程序,这样中断的使用可以更灵活。
点赞  2015-6-25 19:58
定时器,在设置好,打开后,自动运行。不占cpu资源。到定时时间,给cpu中断。cpu跳转到定时器中断处理函数。处理后,继续执行主循环里的内容。
点赞  2015-6-25 20:51
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复