常用中断
外部管脚中断
即使用GPIO管脚作为中断源,连接外设,通过外设拉高或者拉低管脚,触发外部管脚中断;
定时器中断
即使用MCU内置的Timer,通过给Timer配置定时周期,周期性的触发中断;
通信接口中断
即MCU内置的通信模块,例如SPI、UART通信,当MCU作为从方,外设作为主方对MCU发起通信时,触发MCU通信接收中断。
中断设计原则
中断优先级
在一个项目中,需要将所有的中断罗列出来,根据各中断功能的重要程度,即实时性,设计优先级大小。
【例】对外通信接口一般来说优先级是最高的,需要软件以最快速度响应外部命令,是不允许被打断的。如果通信接口中断在接收的过程中被打断,转而执行其它耗时更久的事务,可能会导致命令的接收出现丢数据或其它异常。
中断函数执行负载
中断响应函数一般来说强调小而精,不应把大量计算或者耗时操作在中断函数中执行,仅执行必要且必须的逻辑操作。如果中断函数执行时间较长,可能对程序整体的运行造成致命的影响。
【例】在项目中存在一个定时器中断,定时周期为10ms,中断响应函数中进行了一个复杂的矩阵运算。如果该矩阵运算单次执行耗时8ms,那么对程序整体而言,有大于等于80%的负载开销在了定时器中断上了,导致定时器中断外的其它程序逻辑没有更多的MCU计算资源