【1.什么样的设备需要外部中断】
- STM32想要获取的信号是外部驱动的很快的突发信号
- 按键不推荐,外部中断不好处理按键抖动和松手检测的问题,可以在主程序中循环读取或定时器中断读取的方式
【2.使用外部中断有什么样的好处】
- 有脉冲过来,STM32立即进入中断函数处理
- 没有脉冲的时候,STM32专心做其他事
【3.如何配置外部中断】
- 配置RCC,把涉及到的外设的时钟都打开
- 配置GPIO,选择我们的端口为输入模式
- 配置AFIO,选择使用哪一路的GPIO与后面的EXTI相连
- 配置EXTI,选择触发响应方式(中断响应和事件响应),选择边沿触发方式(上升沿下降沿...)
- 配置NVIC,为中断选择合适的优先级
- 最终,外部中断信号就可以进入CPU了
【4.旋转编码器】
- 硬件接线:VCC和GND分别接电源的正负极,DO数字输出端随意选择一个GPIO口(PB14)。
- 原理:挡光片或编码盘在对射式红外传感器中间经过时,DO会输出电平跳变信号,该信号会触发STM32 PB14口的中断,在中断函数里执行变量++的程序,主循环里调用OLED显示这个变量
【把单独的功能封装在一个模块里,养成好的编写习惯】
- 在Hardware文件夹里添加新的.c和.h文件,并完善基本结构
- 完成初始化函数,和【3.如何配置外部中断】一一对应
- 撰写中断函数
【使用调试模式,看程序能不能跳转到中断函数】
拿遮光片遮挡一下对射装置,程序应该会在断点处停止(黄色小箭头指向断点处)
好可惜,没得玩