首先采用的是思路1中的方法:
采用定时器TIM4定时100us,优先级大于TIM3,可以解决这个问题。
在这里介绍一下中断优先级的相关知识,用到哪里学到哪里嘛。
以下内容转自网络各处,根据自己的理解而来,侵删,仅作参考。
CM4内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。但STM32F4并没有使用CM4内核的全部东西,而是只用了它的一部分。STM32F40xx/STM32F41xx总共有92个中断,包括10个内核中断和82个可屏蔽中断,具有
16级可编程的中断优先级,而我们常用的就是这82个可屏蔽中断。
明确两个优先级的概念——抢占式优先级和响应优先级,举个例子
中断向量 抢占优先级 响应优先级
A 0 0
B 1 0
C 1 1
若内核正在执行 C 的中断服务函数,则它能被抢占优先级更高的中断 A 打断,由于 B 和 C 的抢占优先级相同,所以 C 不能被 B 打断。但如果 B 和 C 中断是同时到达的,内核就会首先响应响应优先级别更高的 B 中断。
对TIM3和TIM4两个定时器来说,希望TIM4的实时性强于TIM3,所以我们需要TIM4的抢占优先级更大,数字越小优先级越大。