你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 PWM CCR配置解析

[复制链接]
STMCU小助手 发布时间:2022-5-2 09:09
在的PWM输出例程中,感觉对捕获/比较寄存器(CCR)的设置不太合理。

原子哥的主函数如下,

T3GOGAYIQB)8~BR7Z)`6`KY.png

TIM_SetCompare函数设置CCR2的值,从而改变PWM的占空比,但是在上面PWM_Init函数中,最后一段代码是

  1. TIM_Cmd(TIM3, ENABLE);
复制代码

所以执行完PWM_Init函数后,定时器已经开始工作,但是此时的CCR2寄存器的值我们并没有设置过,所以应该是默认值0,即前面若干个PWM周期的占空比不是我们想要得到的。只有函数执行到上图红色方框中的TIM_SetCompare2函数后,才会设置目标CCR2的值,从而得到目标占空比。

下面是STM32 固件库中TIM_OC2Init函数的源码(截取),可以看到,在初始化TIM_OCInitTypeDef结构体的时候,通过TIM_Pulse成员变量设置了CCR2 的值,但是在原子哥的例程中并没有该结构体变量的初始化。并且在TIM_OC2Init函数之前调用TIM_SetCompare函数设置CCR2的值是无效的,因为TIM_OC2Init函数中会以默认值重新赋给CCR2寄存器。

  1.   /* Write to TIMx CR2 */
  2.   TIMx->CR2 = tmpcr2;

  3.   /* Write to TIMx CCMR1 */
  4.   TIMx->CCMR1 = tmpccmrx;

  5.   /* Set the Capture Compare Register value */
  6.   TIMx->CCR2 = TIM_OCInitStruct->TIM_Pulse;

  7.   /* Write to TIMx CCER */
  8.   TIMx->CCER = tmpccer;
复制代码

如果想要精准地控制PWM输出,需要注意以下两点:

1、CCRx寄存器的初始化时间

2、定时器的开启时间



收藏 评论0 发布时间:2022-5-2 09:09

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版