欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STM32定时器控制PWM输出

程序员文章站 2022-06-08 18:15:55
...

STM32定时器控制PWM输出

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

大概原理

STM32定时器控制PWM输出

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波。

相关标签: stm32 单片机