蓝桥杯嵌入式——定时器(输出比较模式)
(1)个人习惯
会新建单独的 PWM.c 和 PWM.h 放到HARAWARE文件夹下
(2)准备
-
1、通用定时器使用PWM模式产生PWM波有个缺点:PWM模式同一定时器中,不同的通道下,输出的频率固定,占空比可变。
-
2、那么如果想各个通道产生的PWM频率不同,占空比也不同,那我们就需要借助一个通用定时器的输出比较模式了。
-
3、简单的说:就是当计数器的值与比较值相等就会执行图中的四点(荧光部分为这次要用到的知识点)
(3)编写 void PWM_init(void) 初始函数
(4)编写 void TIM2_IRQHandler(void) 中断服务函数
(5)问题
问题二:
以TIM2通道二为例:
1、在之前就已经把计数器和比较值清零(由于是输出比较模式),则相等进入中断
2、进入中断后,判断标志位=1时。则设置:比较值=当前值+前占空比值(这是下一次进入中断计数器得计数到的值)
3、标志位取反
4、下一次进入中断后,判断标志位=0。则设置:比较值=当前值+后占空比值(这时的数值刚好为下一个周期的开始值)
5、反复这样循环,直到计数到0xFFFF,计数器计数值归零,比较值寄存器里面的值也归零