对射式红外传感器计次(旋转编码器计次)及外部中断的应用(实物未到待完善)

发布时间 2023-04-13 21:54:47作者: 整点薯条拯救一切

【1.什么样的设备需要外部中断】

  • STM32想要获取的信号是外部驱动很快突发信号
  • 按键不推荐,外部中断不好处理按键抖动和松手检测的问题,可以在主程序中循环读取或定时器中断读取的方式

【2.使用外部中断有什么样的好处】

  • 有脉冲过来,STM32立即进入中断函数处理
  • 没有脉冲的时候,STM32专心做其他事

【3.如何配置外部中断】

  1. 配置RCC,把涉及到的外设的时钟都打开
  2. 配置GPIO,选择我们的端口为输入模式
  3. 配置AFIO,选择使用哪一路的GPIO与后面的EXTI相连
  4. 配置EXTI,选择触发响应方式(中断响应和事件响应),选择边沿触发方式(上升沿下降沿...)
  5. 配置NVIC,为中断选择合适的优先级
  6. 最终,外部中断信号就可以进入CPU了

【4.旋转编码器】

  • 硬件接线:VCC和GND分别接电源的正负极,DO数字输出端随意选择一个GPIO口(PB14)。
  • 原理:挡光片或编码盘在对射式红外传感器中间经过时,DO会输出电平跳变信号,该信号会触发STM32 PB14口的中断,在中断函数里执行变量++的程序,主循环里调用OLED显示这个变量

【把单独的功能封装在一个模块里,养成好的编写习惯】

  • 在Hardware文件夹里添加新的.c和.h文件,并完善基本结构

  •  完成初始化函数,和【3.如何配置外部中断】一一对应

 

 

  •  撰写中断函数

 

 【使用调试模式,看程序能不能跳转到中断函数】

 

 拿遮光片遮挡一下对射装置,程序应该会在断点处停止(黄色小箭头指向断点处)

 

 

 好可惜,没得玩