中断
设定某方向的加速度阈值,当传感器测量值超过该阈值时,传感器输出中断信号。信号通过IO扩展芯片的中断管脚与MCU的GPIO相连,进而能在传感器超过阈值时,系统进入ISR。
程序初始化时需要进行的与中断有关的设定如下,设定都是通过对寄存器的改写实现的:
MEMS:
设定输出给IO扩展芯片管脚的中断的高/低电平有效
设定中断为非锁存模式。(锁存模式即中断信号需要在读取某个寄存器后才能清除)
设定中断的方向和阈值。
IO扩展芯片:
设定输出给MCU IO口的中断的高/低电平有效,及level/pulse方式
使能全局中断功能
使能芯片GPIO的中断功能
使能绑定某些管脚的中断功能
清除当前中断寄存器各位状态
MCU:
配置与IO扩展芯片中断管脚连接的GPIO的参数
将该GPIO与相应EXTI绑定
设定EXTI相应线的使能,上升下降沿触发
设定NVIC优先级和使能
中断发生,ISR执行完成后需要进行的释放操作如下:
IO扩展芯片:
清除GPIO中断的挂起状态
清除GPIO具体管脚中断的挂起状态
清除边缘检测、上升下降沿检测状态
MCU:
清除相应EXTI线上的挂起状态