cubemx万年钟_CubeMX| 怎么动态的修改时钟周期?

本文介绍了使用STM32 CubeMX配置的F103C8T6单片机,如何在运行时动态调整TIM4的时钟周期以改变PWM输出频率。作者遇到的问题包括如何修改TIM4的初始化周期、清除计数器以避免输出异常,以及解决清零计数器时产生的噪音问题。最后,通过停止并重新开启计时器解决了问题,但寻求更优解决方案。
摘要由CSDN通过智能技术生成

我用CubeMX生成的SW4STM32项目,单片机是F103C8T6。

在写一个生成PWM输出的代码,编译运行正常。现在有个问题,我想动态的调整时钟的周期值,这样就可以改变输出的频率了。

时钟描述文件tim.c中:

void MX_TIM4_Init(void)

{

TIM_MasterConfigTypeDef sMasterConfig = {0};

TIM_OC_InitTypeDef sConfigOC = {0};

htim4.Instance = TIM4;

htim4.Init.Prescaler = 720-1;

htim4.Init.CounterMode = TIM_COUNTERMODE_UP;

htim4.Init.Period = 227-1; //周期初始化时候的值

我想在main.c里动态的修改htim4.Init.Period这个值该怎么做?用哪个函数或者修改哪个寄存器?小白刚刚学一点也不了解,请有经验的朋友指教,谢谢! O(∩_∩)O

//---补充1---------------------------------------//

刚在main.c里修改了计时器的ARR,实现了实时修改周期,以改变PWM输出频率。

TIM4->ARR = thePeriod;

但是这样又出现了新问题,虽然周期改变了,但是之前的计数没有清空,输出时候不正常。如何解决这个问题呢?怎么清空之前的计数?

//---补充2--------------------------------------

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值