使用cubemx配置定时器输出pwm波

一,pwm波理解

pwm波是由定时器产生的,我们设置定时器计数的值(记到这个数,定时器就会跳到0,重新开始数数,应该是叫自动重装值),以及一个比较寄存器ccr的值,ccr是定时器能输出pwm波的重点,输出pwm波只是定时器其中1种功能,ccr就是pwm波的特有标识了,我们知道定时器在向上计数模式下,记到重装值就变回0,而ccr的作用就是一直与定时器的当前值进行比较,当ccr值比当前值低,就输出低电平,ccr比当前定时器值高,就输出高电平,由此就能输出pwm波了,那如何改变pwm的波形呢?比如我想输出pwm波让灯泡亮一点,该怎么办?就是降低ccr的值,让他低电平的时间减少,高电平的时间变多,这就是pwm波的占空比了。

二,配置引脚

定时器可以同时产生多个pwm波,他们的频率是相同的,因为同一定时器的频率是由同一个内部定时器经过分频器产生的,但是同一个定时器可以设置多个ccr的值,以此来产生多个不同pwm波

我这里选用pa8引脚,他是定时器1的产生pwm波的第一个通道

然后配置定时器

注意打开定时器1的时钟源Clock Source,选择内部时钟,否则产生不了波。

主从模式Slave Mode与pwm没啥关系,不开

定时器1的通道1打开,设置为pwm genereation ch1

Prescler值就是分配系数了,我用的是STM32F103C8T6,一般是72mhz,经过分频值1000-1,得到定时器1的频率就是72x10的6次方除以psc值+1,也就是72000hz,定时器1的值就被设置为72000hz,我们产生的pwm波频率由定时器1输出得到,也是72000hz,

counter mode 说的是计数器的数数模式,up是向上数,此外还有向下计数,中央计数。

inter clock division下面的默认就行,然后就可以生成工程。

三,编写代码

使用cubemx通过上述操作,已经配置好了定时器,gpio输出,pwm产生通道,万事具备,只等我们去使用他了,只要两条语句我们就可以输出pwm波了,第一条,HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);

使用则条函数来开始输出pwm,两个参数分别是定时器1和通道1。

第二条

__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,30000);

设置上面提到的ccr的值,来改变占空比,前两个参数同上,最后一个参数就是我想设置的ccr的值了,他与我们上面设置的自动重装值相比就是占空比了。

四,得到结果

使用keil自带的示波器就可以观察到pwm波形了

内部时钟频率,通过分频器(Prescaler)分频,

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值