【笔记】stm32tim定时器AutoReload和pwm输出Pulse的关系

本文详细解析了STM32中PWM输出与定时器自动重装载的关系,通过实例介绍了如何计算预分频和脉冲数来实现特定周期的PWM信号。同时,阐述了定时器中断回调函数的工作原理,以及如何使用HAL库设置PWM脉冲数和启动PWM输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章:
我的文章
我的文章2
PWM输出(呼吸灯)

老是理不清定时器的自动重装载和PWM通道Pulse的关系

先说PSC和AutoReload的关系

PSC是预分频
ST32F103频率可以上到72M

举个例子:
72000000/72=1M
1/1M=1/1000000=0.000001秒

预分配会影响自动重装载的计数速度
比如上面计算的,他可以0.000001s计一个数
当计到AutoReload的值时,就会产生一个中断

/*中断回调函数*/

pwm的脉冲数Pulse:
在AutoReload的计数周期内,设置脉冲的多少。

比如说舵机 要20ms的周期,那么根据公式:
定时器时间=1/(时钟频率/预分频/计数周期)
20ms=1/(72000000/72/20000)
Pulse是在这个“时钟频率/预分频”速度里面计的数的脉冲速
在程序里面可以用这个程序修改它的脉冲数:
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1, 500);

比如说要
20ms里面500个脉冲(高低电平)
也就是每500时钟频率/预分频=50072M/72=500*0.000001=0.005s的高电平
在这里插入图片描述

定时器中断调用函数:


HAL_TIM_Base_Start_IT(&htim2);//中断使能

 HAL_TIM_IRQHandler(&htim2);//之后进入定时器中断处理函数判断产生的是哪一类定时器中断(溢出中断/PWM中断.....) 和定时器通道
 
 void HAL_TIM_PeriodElapsedCallback(&htim2);    //进入相对应中断回调函数 在中断回调函数中添加用户代码

PWM函数:

	HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
	__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1, 3200);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

创客阿蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值