PWM输出实验
PWM输出实验
1、先了解PWM的工作过程
2、ARR决定周期
CCRx决定占空比3、PWM模式1 & PWM模式2
寄存器TIMx_CCMR1的OC1M[2:0]位来分析: 4、
void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
5、PWM输出库函数概述
(1)设置比较值函数
void TIM_SetCompareX(TIM_TypeDef* TIMx, uint16_t Compare2);
(2)使能输出比较预装载
void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
(3)使能自动重装载的预装载寄存器允许位
void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
6、PWM输出配置步骤
(1)使能定时器3和相关IO口时钟。
使能定时器3时钟:
RCC_APB1PeriphClockCmd();
使能GPIOB时钟:
RCC_APB2PeriphClockCmd();
(2) 初始化IO口为复用功能输出。
函数:GPIO_Init();
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
(3)这里我们是要把PB5用作定时器的PWM输出引脚,所以要重映射配置,所以需要开启AFIO时钟。同时设置重映射。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
(4) 初始化定时器:ARR,PSC等:
TIM_TimeBaseInit();
(5) 初始化输出比较参数:TIM_OC2Init();
(6) 使能预装载寄存器: TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
(7) 使能定时器。TIM_Cmd();
(8) 不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare2();