简单介绍
- 中断是一种处理特殊状态输入输出的方式,相对于创建的task的优先级,中断具有更高优先级软件硬件都可以实现,当中断被以某一种方式触发后,会按照逻辑执行相关中断处理函数,该函数通常是比较简单迅速执行完的
适用场景
- 需要在硬件方面做出一些I/O操作的情况,例如较早手机的打电话按键,无论当前是什么状态,按下后都会跳转通讯录或拨号键盘界面,下面以一个具体的嵌入式设备为例
具体配置
- 主要步骤是配置并绑定GPIO,编写中断函数
- 配置,绑定GPIO
(1)中断是基于GPIO来操作的,需要将I/O硬件对应的GPIO找到,而且需要判断当前GPIO是否支持中断操作
(2)找到某个开机启动的位置,重新定义一个GPIO借口结构体,类型设置成输出(也可以是输入,根据实际情况来决定),对触发中断的方式进行设置,同时配置好其他参数;
(3)然后打开该GPIO接口,例如hal_GpioOpen(),如果上一步设置的是输出,则需要hal_GpioSetout()和hal_GpioSet(),对初始电平进行设置,如果是输入则不需要,
(4)如果相关GPIO电平发生变化,则会按照之前的设置进行触发,如果设置的GPIO是输入模式,相当于会给一些其他操作提供一种输入控制行为,类似开关,不过作为一个输入端口,并不会自己维持高电平(即使初始化是高电平),当外接高电平被移除,会立刻变低,同时不再触发相应中断函数;
2.中断处理函数直接添加
(1)需要在中断处理函数中添加相关操作,最好是非常短的,可以迅速执行完的,如果有复杂任务就开个信号量或者其他方式用其他任务来辅助执行;
(2)针对INPUT类型的GPIO接口,当前测试上升沿触发,在连接了高电平后,会多次触发,这个和中断处理函数逻辑有关,应该是可以设置一定时间内不再触发,直到下次中断到来