背景
我当前有一个100Hz即10ms的中断(下称为大中断),我需要利用一个定时器在这10ms中增加多个可编程的定时中断(下称为小中断)。
方案预研
方案一
在大中断确定多个小中断是中断时间,并配置小中断定时器的多个计数周期。
方案二
在大中断确定多个小中断是中断时间,并配置多个小中断定时器的计时周期。
经过思考,该方案既不能显著改善小中断间隔的问题,并且过于占用计时器资源,故否定该方案
开发
选用STM32F103C8T6,定时器1模拟大中断,其他定时器模拟小中断
时钟树
定时器配置
小中断的定时器预配置与该定时器相同,经过预分频的时钟周期都是1us。
测试1
在大中断中配置小中断
主函数代码
定时器中断函数代码
测试结果
测试2
实现方案一
主函数代码
定时器中断函数代码
测试结果
总结
使用该方式,两个小中断之间的间隔要求不能太小,必须设置一个死区,当两个小中断间隔小于死区阈值时,视两个小中断同时触发