外部中断控制小灯原理图分析按键我们根据我们上一节的点亮小灯,接下来我们来通过外部中断来控制小灯,我们可以打开之前生成的MX文件进行对引脚的编辑。** 我们根据原理图,可以发现我们的按键是在PC13引脚,其中一个引脚是复位引脚。 **这里我们就使用用户引脚来配置我们的外部中断,接下来进入我们的stm32cubemx中。 按键外部中断配置这里我们配置这俩个选项的原因是:第一我们的按键的默认电平就是高电平,按键的初始状态就是高电平。 **这里的配置是根据我们的外部中断的高低电平来做一些变换。 **别忘了开启我们的中断,外部中断控制,需要我们的中断设置来开启,才能触发我们的中断事件。配置我们开始更新工程。 代码编写首先先说一下我们想实现的功能,通过外部中断翻转我们的小灯。 **一般我们想使用外部中断,都是要重写中断处理函数,接下来我们一步步找到按键中断的处理的底层。 好接下来我们复制函数明在it下重新编写。 这里我们重写的外部中断上升沿的中断回调函数,这里我们需要做引脚判断处理,假如其他引脚也设置外部中断,它也会进入程序执行一遍,所以我们需要对引脚进行判断。 **进行判断之后我们对引脚进行处理进行翻转电平,使得小灯完成亮灭的操作! 测试了一下发现了一个错误, **这里有俩个中断回调处理,我们是下降沿触发我们的中断重写函数,所以我们要选择下面的函数,由于我们这里选错了,导致我们的按键按下小灯不能翻转电平。** **好了整个程序完成了!按下按键就能实现翻转小灯的效果。 注意事项**在编写的时候发现假如你有多个按键按下,在if判断按键按下的电平会导致按键的效果不会出现,这里我采用了了if-else if来解决按键的效果不会出现。简单来说,假如是外部中断来处理我们的多个按键,我们需要通过if-else if来轮询按键的速度会快一点吧。或者用switch的效果也可以多个按键中断的解决。 |
【狂欢三】STM32C031使用TIM定时器DMA方式实现PWM输出(二)
【狂欢三】STM32C031使用TIM定时器PWM输出
X-NUCLEO-IKS4A1实现手势滑动
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
【Wio Lite AI视觉开发套件】+cube.ai与食物识别
刘氓兔的杂谈【001】-片上USB 高速PHY
FreeRTOS学习笔记2
【STM32H7S78-DK评测】CoreMark移植和优化--兼记printf重定向实现方法及常见问题
实战经验 | 从CubeMX下载生成STM32元件封装库
【STEVAL-STWINKT1B测评】1、点亮LED