概述本章stm32cubemx配置stm32f103,并且在gd32f303中进行开发,同时通过开发板内进行验证。 本章主要配置定时器输出pwm,同时演示pwm频率与占空比。 需要gd样片的可以加q_qun申请:6_15061293。 查阅手册可以得知,pb11为定时器1的通道3,对应st的为定时器2的通道4。
生成例程这里准备了自己绘制的开发板进行验证。
使用pb11进行验证。
工作过程查看下面工作原理图可以得知,时钟可以由内部internal clock产生或者外部etr。 同时可以设置复位,使能,向上/向下,计数。
查看下列文档可以得知,定时器主要有timx_cnt、timx_psc、timx_arr控制。 同时预分频器(timx_psc)范围位1-65535。
查看timx_psc说明,可以得知定时器频率为 fck_psc / (psc[15:0] + 1)
可以看到,当psc设置为不同的值的时候,计数频率也会发生改变。
同时arr可以改变计数值,当写入的arr越大,他的频率越低,计数周期是arr+1。
pwm频率计算如下所示。
在上面配置tim2参数,预分频系数设置为64-1, 自动重载值设置为1000-1,那么pwm频率为64,000,000/((64-1+1)*(1000-1+1))=1000hz,即1khz。
只要tim2_cnt= tim2_ccrx,ocxrer为低。若tim2_ccrx中的比较值大于自动重载值(在tim2_arr中)则ocxref仍保持1。若比较值是0则ocxref保持0。下图的例子显示了当tim2_arr=8时一些边沿对齐的pwm波形。
__hal_tim_set_compare()设置ccr,可以通过此函数修改pwm。
由于上述设置计数值位1000,那么设置30%的正占空比的ccr应该配置为30%*1000=300,代码如下所示。
hal_tim_pwm_start(&htim2,tim_channel_4);__hal_tim_set_compare(&htim2, tim_channel_4, 300);
修改pwm频率修改pwm频率可以修改psc或者arr来进行改变。
__hal_tim_set_autoreload ()设置tim自动重新加载寄存器值。
初始设置为psc为64-1,arr为1000-1,若设置为500-1,那么他的频率应该是64m/(64-1+1)(500-1+1)=2k 占空比为300/500*100%=60%
__hal_tim_set_autoreload(&htim2, 500-1);
__hal_tim_set_prescaler()在运行时设置tim prescaler。
初始设置为arr为500-1,psc为64-1,若设置为32-1,那么他的频率应该是64m/(32-1+1)(500-1+1)=4k 占空比为300/500*100%=60%
__hal_tim_set_prescaler(&htim2, 32-1);
不间断电源技术原理、特点及发展
疫情之下 彩电行业雪上加霜
ZU+系列MPSoC的外围接口详细分析
王垠的40行代码是什么_王垠40行代码专家解读
MODBUS RTU转EtherNet/IP网关连接希望森兰变频器案例
STM32CUBEMX开发GD32F303(12)----输出PWM及修改PWM频率与占空比
元宇宙Nb空间即将上线 打造人人都能参与的元宇宙生态
不追逐工艺的代工厂SkyWater
智慧停车给我们的生活带来怎样的便利
SIP封装是什么,SIP封装技术前景介绍
NVIDIA面向数百万数据科学家推出全新高性能工作站
为什么莱特币网络上的采用率会高于比特币网络
郑南宁院士:人工智能带来人文风险需多学科合力解决
未来柔性触控导电膜市场将呈现出爆发式的增长
红魔5G游戏手机已开启预约该机搭载骁龙865处理器首发144Hz刷新率屏幕
人工智能迎来落地时代,风力发电运维巡检上演无人机硬核剧情
无线LED信息发布系统设计与实现
米动手环怎么样 一名合格的健康助手
PID到底是个什么?举个例子告诉你
SiC器件的大功率充电桩将迎来巨大市场机会