我用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--------------------------------------