STM32F103-PWM输出配置及simulink自动代码生成

目录

STM32的PWM输出介绍:

pwm输出配置:

附件


本文记录STM32F103PWM输出配置过程,及simulink模型配置,代码生成

STM32的PWM输出介绍:

脉冲宽度调制模式可以生成一个信号,该信号频率由TIMx_ARR 寄存器值决定,其占空比则由TIMx_CCRx 寄存器值决定。

从下图可以看出,当CCR寄存器和CNT计数器数值一样时,会产生动作(改变通道对应的GPIO电平)。由于CNT溢出时,重载值由TIMx_ARR寄存器值决定的。

所以说TIMx_ARR寄存器值决定周期,而TIMx_CCRx寄存器值决定CNT溢出时,经过多久会产生动作(改变通道对应的GPIO电平),也就是决定了占空比。

向上计数为例,重载值为ARR,比较值为CRRx

上图可以看出:

0-t1段,定时器计数器TIMx_CNT值小于CCRx值,输出低电平。

t1-t2段,定时器计数器TIMx_CNT值大于CCRx值,输出高电平。

当TIMx_CNT值达到ARR时,定时器溢出,重新向上计数...循环此过程至此一个PWM周期完成。

上图更加形象的说明了

信号频率由 TIMx_ARR 寄存器值决定。

占空比则由 TIMx_CCRx 寄存器值决定。

①TIMx_CCMR1寄存器的OC1M[2:0]位,设置输出模式控制器

110:PWM模式1,111:PWM模式2。

②计数器值TIMx_CNT与通道1捕获比较寄存器CCR1进行比较,通过比较结果输出有效电平和无效电平。

OC1REF=0 无效电平,OC1REF=1无效电平。

③通过输出模式控制器产生的信号。TIMx_CCER寄存器的CC1P位,设置输入/捕获通道1输出极性。

0:高电平有效,1:低电平有效。

④TIMx_CCER:CC1E位控制输出使能电路,信号由此输出到对应引脚。

0:关闭,1:打开。

首先对PWM模式1和PWM模式2进行介绍:

模式1:

在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。

模式2:

在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电平。

PWM输出高低电平由TIMx_CCMR1:OC1M位和TIMx_CCER:CC1P位共同决定。

总结下来:

模式1:

CNT<CCR为有效电平//(OC1REF =1)

CNT>CCR为无效电平//(OC1REF =0)

模式2:

CNT<CCR为无效电平//(OC1REF =0)

CNT>CCR为有效电平//(OC1REF =1)

CC1P:

0:高电平有效

1:低电平有效

举例:配置向上计数,MODE1CC1P置0,则PWM波先输出高电平的,到占空比后再输出低电平

参数TIM_OCPolarity用来设置极性是高还是低。(取值为TIM_OCPolarity_High时,计数值比CCR小时定义为高电平,比CCR大时定义为低电平,取值为TIM1_OCPolarity_Low时相反)

pwm输出配置:

设置TIM3的通道3,4为PWM输出模式,对应的引脚为PB0,PB1

TIM_APBClock 总线时钟-根据时钟树决定

不同引脚的时钟源:

在cube中配置好后,保存配置。

打开simulink模型,在模块库中拖一个TIM模块到模型中,Timer选择TIM3(cube配置好保存后才会出来选项)

总线时钟经过分频后得到对应TIM时钟

这里的时钟为72M,分频系数 TIM_Prescaler,取分频系数为71,计算出来的TIM时钟为1M

TIM_ARR 自动重装载值 -这个值决定pwm输出频率

TIM时钟/TIM_ARR 即为PWM波频率

取ARR为1000,此处计算出来的PWM波频率为1Khz

再选择占空比 ,根据通道,设置对应CCR的值(对应下面的pulse value)。

对于Simulink模型来说,模块设计了可以指定外部输入的占空比,勾选Duty cycle is an input port即可

通道4与通道3配置类似。

通过外部输入改变占空比,即可改变PWM输出的占空比。

配置完后即可生成代码,编译下载运行~

实际测试之前测试过没问题,现在示波器不好弄,不贴图了。

有问题可以评论区回复或直接联系:QQ/WX:953909472
欢迎点赞分享~

附件

测试工程及代码

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

赞哥哥s

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

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

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

打赏作者

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

抵扣说明:

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

余额充值