对于STM32来说,想要获取的信号是外部驱动的很快的突发信号
例1:旋转编码器的输出信号:
- 可能很久都不会拧它,不需要STM32做任何事情
- 但是一拧它,就会有很多脉冲波形需要STM32接收
- 信号是突发的,STM32不知道什么时候会来
- 外部驱动的,STM32只能被动读取
- 信号非常快,STM32稍微晚一点来读取,就会错过很多波形
例2:红外遥控接收头的输出:
- 接收到遥控数据后,它会输出一段波形,这个波形转瞬即逝,并且不会等你
例3:按键
- 外部驱动的突发事件
- 但是并不推荐使用中断来读取按键,因为外部中断不好处理按键抖动和松手检测的问题
- 对于按键来说,输出波形也不是转瞬即逝的
- 要求不高的话可以在主程序中循环读取
- 如果不想用主循环读取,可以考虑定时器中断读取的方式
- 这样既可以做到后台读取按键值、不阻塞主程序,也可以很好地处理按键抖动和松手检测的问题
总结:
使用外部中断的硬件模块所具有的特性可能包括:
- 信号是突发的
- 信号速度非常快,转瞬即逝,难以捕捉
- 没有信号过来时,SMT32不需要做任何事情
- 在中断内部时不需要做很复杂的事情