技术热线: 4007-888-234

单片机开发:什么时候使用“轮询”和“中断”?

更新时间: 2021-01-11
阅读量:5768

为单片机方案开发过程中,可以使用轮询方法或中断方法来检查状态或完成特定操作,比如控制外围设备。在本文中,英锐恩单片机开发工程师比较了这两种方法的优点和缺点。

20200907170438.png

一、轮询

轮询方法仅使用检查特定标志或多个标志的代码段来了解操作状态。轮询方法始终是主代码的一部分,而不是ISR的一部分。

轮询是一种较简单的执行方法,建议在需要验证外围设备工作的设计早期阶段使用。它不涉及任何优先级。同样,代码段将始终在固定的时间和固定的顺序中执行。它易于调试,对其他代码段的执行没有影响。没有大内存管理问题,没有堆栈问题。

但是它确实有一些缺点,比如错过事件的可能性更大。这是因为轮询代码仅按特定顺序执行,而不是按响应事件执行。这可能会导致一种情况,比如在执行轮询代码之前连续发生两个事件。在这种情况下,代码只会执行一个事件。此外,轮询也占用了更多的单片机执行时间。轮询只会重复执行相同的代码段,这与事件发生与否无关。在单片机方案开发早期,可以使用轮询。系统会在特定的时间发生事件,这是使用轮询比较好的地方。

一、中断

即中断使用控制器的某个功能,从而响应特定事件。执行中断,单片机会停止执行主代码,并切换到另一个称为“中断服务程序”的部分。

由于中断的性质,丢失事件的可能性较小。此外,ISR代码仅在事件发生时才执行,因此单片机负担较小。中断的另一个功能是优先级,可以控制系统对同时发生的事件的响应。嵌套中断使系统即使在响应前一个事件时发生事件的情况下也能做出响应,而轮询可能会错过此类事件。

但是中断也有一些缺点:中断设置起来比较困难,并导致许多复杂性。由于可以随时中断主代码,因此需要保护关键程序部分。另外,中断会延迟主代码的执行时间,并且无法计算主代码任何部分的执行时间,这是因为该过程可能会被中断延迟。此外,还有许多与中断有关的堆栈和内存管理问题。由于中断,很有可能造成数据丢失和数据损坏。

如果发生的事件确实是随机且不可预测的,则需要使用中断。当必须立即或在固定的时间内对此类事件做出响应时,需要使用轮询。

轮询和中断在代码开发中都有其位置和用途,在正确的位置使用正确的方法可以减少代码复杂性并提高可靠性。

以上就是英锐恩单片机开发工程师分享的单片机开发过程中使用中断和轮询的相关知识,如果你需要更多单片机方案产品的信息,请拨打官网电话:0755-82543511,或点击“在线咨询”,我们的客服人员将为你提供更详细的解答