(8)蓝桥杯嵌入式——定时器(输出比较模式)

(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,计数器计数值归零,比较值寄存器里面的值也归零

猜你喜欢

转载自blog.csdn.net/m0_46278925/article/details/113574143