STMCU小助手
发布时间:2023-2-5 22:57
|
简介: 这里简单用stm32产生多路PWM 1、 32的通用定时器3可以产生4路PWM输出(同频率,不同占空比) 2、 一个定时器产生的PWM频率由定时器输入频率决定 时钟树决定通用定时器时钟来自APB1,且如果APB1的分频为1的话,定时器时钟为APB1时钟,否则定时器时钟为APB1时钟的两倍。 系统初始化的时候,将APB1分频数为2也就是36MHZ,所以此处的定时器3输入时钟是APB1的两倍 72MHZ。 根据 Tout= ((arr+1)(psc+1))/Tclk 计算溢出时间 注:溢出时间单位us, 输入时钟单位MHZ 此处计算的溢出时间:90019/72=237.5us 3、 确定定时器多路输出的GPIO引脚 查表 源码: 第一部分:main函数 #include “sys.h” //配置中断 #include “timer.h” //配置定时器 static u16 seg[4]={200,400,600,800}; //保存各路占空比 int main(void) //多个定时器同一通道实现多路PWM(同频率,不同占空比) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2 TIM3_PWM_Init(899,18); //18分频。设置频率 TIM_SetCompare1(TIM3,seg[0]); //设置定时器3通道的比较值 TIM_SetCompare2(TIM3,seg[1]); TIM_SetCompare3(TIM3,seg[2]); TIM_SetCompare4(TIM3,seg[3]); while(1); } 第二部分 定时器初始化函数: 下面展示一些 内联代码片。
最终效果:
通过差量可以看出PWM波的周期为237.5us,频率是4208.8HZ。 改天更新修改PWM频率 ———————————————— 版权声明:两只老虎爱跳舞.com |
经验分享 | 利用STM32 TIMER实现同频跟随输出示例
经验分享 | 一个基于TIMER事件的中断响应话题_续
经验分享 | 一个基于TIMER事件的中断响应话题
11张图学会STM32定时器!
经验分享 | STM32U5系列TIMER+DMA+DAC应用演示
经验分享 | STM32G4 UART+TIMER+DMA应用示例
经验分享 | STM32定时器同步启动示例及应用提醒
经验分享 | STM32 TIMER+DMA输出PWM异常二案例
经验分享 | 更改STM32定时器周期后的输出疑问分析
基于定时器捕获测量脉宽的应用示例
微信公众号
手机版