STM32定时器控制PWM输出

STM32定时器控制PWM输出

今天刚用32加l298n带起了四相五线电机正反转,学习一下怎么更为精细的控制为pid调试做准备。
看的洋哥的视频

大概原理

STM32定时器控制PWM输出_第1张图片

ARR设置

对PWM_INIT函数的理解:两个参数分别对应(arr,psc)
溢出时间Tout=(arr+1)*(psc+1)/Tclk,Tclk一般为72MHZ
比如设置20ms溢出时间,20ms=(59999+1)(23+1)/72m
则60000为自动装载值,预分频系数为24
以TIM3为例
TIM3_PWM_Init(59999,23);

CCRx

已经得出60000为自动装载值
TIM_SetCompare3(TIM3,xxx);
对应数字在60000中所占比例计算出角度

PWM具体启动过程

初始化

TIM_TimeBaseInitStrue.TIM_Period=arr;//设置自动重装载值
TIM_TimeBaseInitStrue.TIM_Prescaler=psc;//预分频系数
TIM_TimeBaseInitStrue.TIM_CounterMode=TIM_CounterMode_Up //计数器向上溢出
TIM_TimeBaseInitStrue.TIM_ClockDivision=TIM_CKD_DIV1;//时钟的分频因子

TIM_OCInitStrue.TIM_OCMode=TIM_OCMode_PWM1;//设置PWM模式 CNT<
TIM_OCInitStrue.TIM_OCPolarity=TIM_OCPolarity_High; //设置极性-有效电平为高电平
TIM_OCInitStrue.TIM_OutputState=TIM_OutputState_Enable;//输出使能
TIM_OC3Init(TIM3,&TIM_OCInitStrue);// TIM3的通道3PWM模式设置
TIM_OC3PreloadConfig(TIM3,TIM_OCPreload_Enable);// 使能预装载寄存器

TIM_CMD(TIM3,ENABLE);

初始化后即可开始调整参数输出对应PWM波。

你可能感兴趣的:(STM32定时器控制PWM输出)