文章目录
下载工程文件:
https://gitee.com/Joseph_Cooper/blue-bridge-embedded
前言
STM32
中的硬件PWM
功能是依赖定时器的计数功能实现的本篇文章将介绍其工作原理和配置流程。如果想看三种定时器之间的区别的话点击这里。
1、PWM工作过程
PWM
工作过程:
PWM
的工作原理如图所示假设CNT
计数器向上计数,则CNT
数值变化在0 -> CCRx
的过程中IO
输出为0,CNT
数值变化在CCRx -> ARR
过程中输出为1,而后CNT
的数值归0。
以上工作流程建立在:
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
的设定下。
2、TIMx_CHx – IO 映射表
2.1、TIM1
2.2、TIM2
2.3、TIM3
2.4、TIM4
3、配置流程
为了效果明显,这里采用TIM3
的完全重映射的1、2
通道即PC8、PC9
,这两个IO连接到CT117E
的LED:LD1、LD2
。
配置流程:
1)开启 TIM3
时钟以及复用功能时钟,配置 PC8、PC9
为复用输出。
2)设置 TIM3_CH3、TIM3_CH4
重映射到 PC8、PC9
上。
3)初始化 TIM3
,设置 TIM3
的 ARR(自动重装载值) 和 PSC(预分频值)
。
4)设置 TIM3_CH3、TIM3_CH4
的 PWM
模式,使能 TIM3
的 CH3、CH4
输出。
5)使能 TIM3
。
6)修改 TIM3_CCR3、TIM3_CCR4
来控制占空比。
周期计算公式:溢出时间Tout
(单位秒)
注:Tclk在此一般取72M
4、部分源码
main.c:
#include "Headfile.h"
/**
* @file main.c
* @brief 实现交替呼吸灯
* @version 1.0
* @author JosephCooper
* @date 2020.09.02
*/
/** 滴答定时器实现延时中间变量 */
u32 TimingDelay &