基于STM32HAL库判断传感器数据和系统定时器外部中断
1,传感器
我们常见的传感器模块有光敏电阻传感器,反射传感器,热敏电阻传感器,火焰传感器等。以光敏电阻传感器为例,光敏电阻传感器的详细见下图:




我们在这里使用的是传感器模块的DO端来进行对传感器数据的简易收集也就是高低电平的判断,通过GPIO检测DO接口的电平,来进行LED的点亮,CubeMX配置和HAL库程序如下:

其中的BEEP和LED是同一个引脚,Sensor引脚为检测传感器DO引脚的电平变化的引脚。

2.系统定时器中断
系统定时器的基本介绍如下:
了解了系统定时器的概念我们来看看中断的概念:

在CM3内核中有着很多的中断,那么对于这些中断怎么来管理呢,我们就要来了解一些嵌套中断向量控制器如下:

下面我们通过使用系统时钟中断来在中断中实现LED灯一定时间间隔的闪烁,程序如下图所示:

3.外部中断
外部中断通过来对输入信号上升沿和下降沿的检测实现中断产生,对于外部中断有一个专门的控制器外部中断控制器,来看看详细介绍:

EXTI有20个中断/事件线,每个GPIO都可以设置为输入线占用EXTI0到EXTI15,但是对于每一个GPIO口都有特定的EXTI配置,具体如下表:

可见在该内核中有着这么多的中断,当这些中断同时发生时应该怎么处理呢,我们就可以通过设置中断抢占优先级和响应优先级来进行中断优先级处理的配置。具体分组如下:

数字越小优先级越高,抢占优先级高的可以打断抢占优先级低的,响应优先级高的不能打断响应优先级低的,中断配置的内部框图如下:

下面我们用HAL库来实现一个外部中断按键点灯的功能,CubeMX的配置和程序如下所示:


在这里我们可以看到我们在main函数中是通过了在Callback函数中来进行程序编写来是实现功能的,该函数叫做回调函数,下面我们来了解一下这个函数:

