今天学习了通用定时器实验,产生很大困惑: 1,例程中定时器计数时间是500ms产生一次中断,我把中断事件的延时时间加长了改为3s,按照这样的理论,中断事件的执行时间大于计数器计数时间,这样中断还没有执行完又会产生中断,又要进入中断事件,这种情况下根本没有时间执行主函数后面的死循环,但是实验效果好像并不是这样的,中断事件依然是3s中执行一次,死循环里的LED0依然在执行,不是说在执行中断事件时,主程序不是被挂起了吗?
2.例程中计数器计数500ms,采用自动重装,不知道自动重装开始于何时,是计数器计数完就产生中断,还是执行完中断事件后再重新装载。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1,例程中定时器计数时间是500ms产生一次中断,我把中断事件的延时时间加长了改为3s,按照这样的理论,中断事件的执行时间大于计数器计数时间,这样中断还没有执行完又会产生中断,又要进入中断事件,
就这里是不会的,同一个定时器,优先级一样,还在执行当前中断,下一次中断是不能打断本次中断的。
关于楼主说主函数的LED还会闪烁这个问题,应该是不会出现的,从中断函数里面出来的时候,会判断是否有事件发生,应该是没有机会执行主函数的,这个等回家,我也测试下看看。
我的语言表达有问题,我的意思是对于同一个中断,当中断标志被置1时,程序会先去清除中断标志,然后去处理中断事件,但是中断事件执行时间有点长,比如加长延时。这样导致中断事件还没有执行完,定时器计数完毕又把中断标志位置1,又需要等待处理中断。同一个中断事件肯定不会打断自身的。
期待这位同仁的结果
一周热门 更多>