HAL_NVIC_SetPriorityGrouping
函数
HAL_NVIC_SetPriorityGrouping
是设置中断优先级分组函数。
这个函数在一个工程里基本只调用一次,而且是在程序 HAL 库初始化函数里面已经被调
用,后续就不会再调用了。因为当后续调用设置成不同的中断优先级分组时,有可能造成前面设置好的抢占优先级和响应优先级不匹配。
3、NVIC的使用
二、EXTI 简介
EXTI
即是外部中断和事件控制器,它是由
20 个产生事件/
中断请求的边沿检测器组成。每 一条输入线都可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以独立地被屏蔽。挂起寄存器保持着状态线的中断请求。
产生中断线路目的使把输入信号输入到 NVIC,进一步运行中断服务函数,实现功能。而产生事件线路目的是传输一个脉冲信号给其他外设使用,属于硬件级功能。
对于正点原子:
EXTI 的功能框图是最直接把有关
EXTI
的知识点连接起来的图,掌握了该图的来龙去脉,就会对 EXTI
有了一个整体熟悉,编程时候可以得心应手。
三、如何使用中断
1、EXTI中断流程
EXTI 0-15这16根线会与gpio完成映射,EXTI16、17....等输入线是其他外设中断,比如闹钟,USB等,这两者统称为EXTI中断。
2、EXTI中断配置步骤
其中步骤2-5可以使用HAL_GPIO_Init一步到位
四、HAL库中断回调处理机制
五、应用示例
应用步骤
1、看原理图确定引脚连接
2、使能IO口时钟,完成IO口与中断线的映射关系,设置优先级,设置中断服务函数处理中断,设置中断回调函数实现具体中断处理操作。
按键消抖的实现:
按键按下(GPIO中断)
|
v
启动定时器(复位计数器)
|
v
定时器计时(10ms)
|
v
定时器计数完成(触发中断)
|
v
检查按键状态(确认按下)
|
v
停止定时器,设置标志位
|
v
主循环处理中断事件