事件与中断区别
很多时候,我们经常使用到中断。但是STM32还有一个东西叫做事件,那么这个事件是什么呢?看了上面这个文档我们知道:
(1)中断是需要CPU执行的,而事件是由硬件实现。
(2)事件不需要软件参与,所以响应速度也更快。
(3)事件降低了CPU的负荷,节省了中断资源。
这三句话基本就详细的介绍了事件与中断的区别,但是相比还有很多人无法理解,什么是CPU执行,什么是硬件实现。那么接下来我将人体比作一个单片机进行举例
举例
我们可以把人脑比作CPU,除了大脑以外的所有东西都是属于硬件部分。接下来我将以膝跳反射和人们看见火灾之后打119这两个事情举例,分析何为中断,何为事件。
膝跳反射
接收过九年义务教育的人都知道,人是具备膝跳反射的。
(1)首先我先带大家回忆一下什么叫做膝跳反射。膝跳反射就是,当我们的膝盖在人没有注意的情况下,突然受到敲击,会出现抬腿的动作。
(2)初中生物书上面说了膝跳反射是不需要经过大脑控制,自发的行为。
(3)那么事件就很好理解了。当出现外来脉冲(膝盖突然受到敲击),人腿自动抬起(ADC采集,触发DMA等),全过程不需要大脑(CPU)参与。
人们看见火灾之后打119
想象一下,当我们看见了远处发生了火灾,这个时候我们会很自然的拿出手机拨打119。
(1)我们分析一下这个过程,我们先是看见火灾,然后大脑发送指令控制我们的双手,拿出手机拨打119。
(2)那么我们现在就理解中断是什么了。出现外来脉冲(看见火灾),产生中断(大脑处理事件发送指令),中断服务函数(拿出手机拨打119)。这个过程,大脑(CPU)参与了控制。
由上面这个例子我们也可以知道,为什么我们产生中断需要一个中断服务函数。因为,假如我们看见了火灾,产生的中断是,打电话给朋友说,我这里有日照金山,拍个照给你看。显然这是一个错误的中断行为。
正确的中断应该是怎么样的呢?发现有火灾,拨打119。看见日落金山,给朋友打电话,说我看见了日照金山,拍个照给你。