通用定时器实验

2019-10-16 04:56发布

今天学习了通用定时器实验,产生很大困惑:       1,例程中定时器计数时间是500ms产生一次中断,我把中断事件的延时时间加长了改为3s,按照这样的理论,中断事件的执行时间大于计数器计数时间,这样中断还没有执行完又会产生中断,又要进入中断事件,这种情况下根本没有时间执行主函数后面的死循环,但是实验效果好像并不是这样的,中断事件依然是3s中执行一次,死循环里的LED0依然在执行,不是说在执行中断事件时,主程序不是被挂起了吗?

       2.例程中计数器计数500ms,采用自动重装,不知道自动重装开始于何时,是计数器计数完就产生中断,还是执行完中断事件后再重新装载。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
dengxingling8
1楼-- · 2019-10-16 08:48
楼主说的现象我还没有测试,不过有个说法是有问题的:
1,例程中定时器计数时间是500ms产生一次中断,我把中断事件的延时时间加长了改为3s,按照这样的理论,中断事件的执行时间大于计数器计数时间,这样中断还没有执行完又会产生中断,又要进入中断事件,
就这里是不会的,同一个定时器,优先级一样,还在执行当前中断,下一次中断是不能打断本次中断的。

关于楼主说主函数的LED还会闪烁这个问题,应该是不会出现的,从中断函数里面出来的时候,会判断是否有事件发生,应该是没有机会执行主函数的,这个等回家,我也测试下看看。
ouxili
2楼-- · 2019-10-16 12:59
为啥没有前辈回答我?
企鹅在挠痒
3楼-- · 2019-10-16 14:29
 精彩回答 2  元偷偷看……
忆声
4楼-- · 2019-10-16 16:36
  mark
ouxili
5楼-- · 2019-10-16 21:14
dengxingling8 发表于 2016-12-2 19:33
楼主说的现象我还没有测试,不过有个说法是有问题的:
1,例程中定时器计数时间是500ms产生一次中断,我把 ...

我的语言表达有问题,我的意思是对于同一个中断,当中断标志被置1时,程序会先去清除中断标志,然后去处理中断事件,但是中断事件执行时间有点长,比如加长延时。这样导致中断事件还没有执行完,定时器计数完毕又把中断标志位置1,又需要等待处理中断。同一个中断事件肯定不会打断自身的。
ouxili
6楼-- · 2019-10-17 01:27
企鹅在挠痒 发表于 2016-12-2 18:15
我在电路板测试了一下。如果中断处理函数内延时1000或者1500ms时,主函数led0的亮灭会被屏蔽。。但是中断处 ...

期待这位同仁的结果

一周热门 更多>