【PWM初始化函数】
- RCC开启时钟。同时开启TIM外设和GPIO外设时钟
- 配置时基单元和时钟源选择
- 配置输出比较单元(CCR的值,输出比较模式,极性选择,输出使能等)
- 配置GPIO,把PWM对应的GPIO口,初始化为复用推挽输出的配置
- 运行控制
【查看库函数】
1.配置输出比较模块(OC,Output Compare,输出比较):
void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
2.单独更改CCR寄存器值的函数
void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1); void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2); void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3); void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4);
3.高级定时器输出PWM时调用这个函数使能主输出,否则PWM将不能正常输出
void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);
【初始化定时器】
第一步:配置时基单元
关键点1:通用定时器TIM2是APB1总线的外设
关键点2:需要包括(开启时钟RCC_APB1PeriphClockCmd+设置RCC定时器内部时钟TIM_InternalClockConfig构成内部时钟模式+利用结构体配置时基单元TIM_TimeBaseInit)。
其一,定时器默认是RCC内部时钟工作,除此以外,还有ETR外部时钟,ITRx其他定时器作为时钟源。
其二,结构体配置时基单元需要包括预分频器PSC,自动重装器ARR和计数器CNT
第二步:配置比较单元
关键点1:要给结构体赋初值,改变个别参数值。不然万一遇到需亚将通用定时器改为高级定时器的情况,会因为个别参数没有赋值而出错。
第三步:配置GPIO口
关键点1:TIM2的OC1通道到底借用了哪个GPIO口
关键点2:输出方式要使用复用推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
开漏/推挽输出引脚的控制权来自于输出数据寄存器,复用开漏/推挽输出的输出控制权则移交给片上外设