用定时器中断,单片机中断服务程序动作的处理时间大于定时器定时时间会怎样?
单片机中断处理时间大于定时器定时时间,在下次中断时间到时,因为中断是同一类型、同一优先级,所以不会马上进入新的中断处理。
而是在本次中断处理结束后,单片机又马上进入新的定时器中断函数,主函数中的语句可能会没有机会运行到,会影响后面中断的实时性。所以答案为:等待中断处理完再进入新的中断处理。
最安全的处理方式:中断服务程序里边的动作处理时间越短越好,有什么事放外面处理。中断的初衷是为了提高系统实时性,中断处理太长,会影响同级的中断响应,其它中断谈何实时。
附:解决高速大量数据的中断处理难题
1.在中断中,只接收。或只作一些简单的语句。2、在主程序中处理。
---------如果上面的说法不理解 可以看下面----------
这是在定时器中断里面,如果中断里面执行的东西太多,中断发生的时间短。高优先级中断可以任意时刻到达。
如果这时候存在高优先级的中断一来,后面未执行完的程序就不会去执行而重新开始执行。
优先级高就抢断,否则等待结束执行。
例如定时器中断里的某任务执行完需要2ms,而定时器溢出中断发生的时间为1ms,那么这个任务执行到一半就会重新执行。 总之:任务只要没有被高优先级中断,不管定时中断发生时间多短 任务时间多长 都会被执行下去的。
转载:http://t.csdn.cn/rSfSW
作者QQ4577105