由于内容比较多,为了更详细的说明,我也会花比较多的时间研究。而为了及时更新,我会把有些文章分成几个部分,谢谢大家理解 。
目录
一、需求分析
1、需要的外设资源分析:
2、外设具体分析:
3、软件分析
二、软件配置
1、复制项目流程:
2、中断配置
a、GPIO模式配置
b、NVIC配置
三、编写代码:【蓝桥杯嵌入式】四、各种外设驱动(三)NVIC中断程序通用步骤——中断服务程序
一、需求分析
使用中断方式检查按键是否按下,设置不同优先级,介绍通用的中断处理步骤。
1、需要的外设资源分析:
4个KEY信号引脚,8个LED控制引脚(引脚的配置与前面的文章相同,这里不再赘述)
2、外设具体分析:
根据STM32G4手册,该芯片的中断有很多,这里要用到的是外部中断。中断的知识点很多教程和教材上都有详细介绍,这里只针对比赛时如何快速准确的使用中断做讲解。
将按键引脚设置为外部中断信号引脚,上跳沿触发。KEY1设置为较高优先级,KEY2设置为较低优先级。使用KEY3产生软中断,模拟KEY1按下。所以一共要开启三个外部中断EXTI0\1\2。
因为这里的按键是低电平有效,所以设置为下跳沿引发中断。
3、软件分析
在中断回调函数中编写代码,当KEY2按下时所有LED点亮,KEY1按下时熄灭LED1~4(为了验证正确性,这里延时1s)。KEY3按下后会产生软中断(这个一般考试时用不到,感兴趣的可以看HAL文档),出发EXTI0中断。
二、软件配置
新建项目"EXTI_Demo",建议新建练习一下,或者可以直接复制“dev_KEY_Demo”项目。
1、复制项目流程:
a、复制整个“dev_KEY_Demo”文件夹
b、改名,文件夹名称和 .ioc 文件名称要一致
c、删除文件/夹
d、打开 .ioc 文件,更改时钟配置。
e、更改配置(在下面:2、中断配置),生成文件;可以看到代码没有改动。
f、引入外部 .c (如led.c)文件,完成项目复制。
2、中断配置
a、GPIO模式配置
打开 .ioc 文件,左键PB0引脚,选择GPIO_EXTI0模式。
右击PA0引脚,改名字为KEY4。
设置为下跳沿触发中断,上拉。
其余两个做同样处理,结果如图:
b、NVIC配置
先将Time base: System tick timer(基础时钟:系统滴答计时器)的优先级设置为0:
4位用于抢占优先级,EXTI0设置为较高优先级;EXTI1设置为较低优先级2;EXTI2设置为2。
配置完成后生成代码。