目的
了解人体红外传感器 HC-SR501 的驱动原理和STM32F030的中断机制,通过配置 STM32F030 芯片 GPIO 相关寄存器和外部触发中断实现人体红外传感器检测人体。
原理
中断是指当CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂停正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程就称为中断,我们把引起中断的原因,或者能够发出中断请求信号的来源统称为中断源。
NVIC,全称:Nested vectored interrupt controller,即嵌套向量中断控制器。Cortex-M0具有32个可屏蔽中断通道,4个可编程中断优先级(使用2位中断优先级),所有中断包括核心异常都由NVIC管理。中断优先级是指,假设有两个中断先后触发,已经在执行的中断优先级如果没有后触发的中断优先级高,就会先处理优先级高的中断。
外部中断线或外部事件线如下图所示:
中断和事件的区别:由上图可以看出,从外部激励信号来看,中断和事件的产生源都可以是一样的,之所以分为两部分,是由于中断需要CPU参与,需要软件的中断服务函数才能完成中断后产生的结果;但是事件是由硬件自动完成这个事件产生的结果(比如:I/O触发产生事件,然后联动触发AD转换)。
GPIO和中断线的映射关系如下图: