STM32定时器控制PWM输出
程序员文章站
2022-06-08 18:15:55
...
STM32定时器控制PWM输出
今天刚用32加l298n带起了四相五线电机正反转,学习一下怎么更为精细的控制为pid调试做准备。
看的洋哥的视频
大概原理
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<<CCR时输出有效电平
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波。
上一篇: 虚基类相关总结
下一篇: Linux下一种高效多定时器实现