知识卡片
中断替代高频轮询
内容
按钮或定时事件可由中断捕获,主循环只处理被置位的状态,不必持续高速轮询引脚。发散:中断节省处理器时间,但会引入边沿选择、去抖和共享状态问题,所以它不是免费复杂度。
参考来源
- 位置:《嵌入式系统设计与实践》第4章《输入、输出和定时器》"4.4.1 按钮按下时的中断"及相邻小节(源文件:_epub-src/OEBPS/text00052.html附近)
- 结论依据:原文明确"这个持续不断的查询叫做轮询,它很容易在代码中实现。但是,如果LED需要尽可能快地关掉,则可以使用按钮中断正常的处理流程",并说明中断可以"捕获用户输入让主循环不需要快速地对I/O引脚进行轮询"。
- 原始内容:这些方法都会检查按钮并判断其是否按下。这个持续不断的查询叫做轮询,它很容易在代码中实现。但是,如果LED需要尽可能快地关掉,则可以使用按钮中断正常的处理流程……这可能是中断可以帮助我们的另一个方面,即捕获用户输入让主循环不需要快速地对I/O引脚进行轮询。