您现在的位置: 主页 > MCU > 单片机技术应用 > STM32高级定时器用于普通定时,定时周期变长 -
本文所属标签:
为本文创立个标签吧:

STM32高级定时器用于普通定时,定时周期变长 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]最近在用stm32定时器控制步进电机,由于普通定时器不够用,只能把TIM1当普通定时器用,我随手就把普通定时器的代码搬过去。voidcs_Timer_Init(void)//TIM1us级{TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;/*Time

最近在用STM32定时器控制步进电机,由于普通定时器不够用,只能把TIM1当普通定时器用,我随手就把普通定时器的代码搬过去。

本文引用地址: http://www.21ic.com/app/mcu/201808/780713.htm


voidcs_Timer_Init(void)//TIM1us级

{

TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

/*Timebaseconfiguration*/

TIM_TimeBaseStructure.TIM_Period=1000;

TIM_TimeBaseStructure.TIM_Prescaler=71;

TIM_TimeBaseStructure.TIM_ClockDivision=0;

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);

TIM_ClearITPendingBit(TIM1,TIM_IT_Update);

TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);

}



编译下载后,发现步进电机转的很慢,和原先预计的不一样,第一反应是怀疑拷贝过来的代码有问题,核对了一边发现没问题,用逻辑分析仪测试了,发现真是定时器慢了,在检查代码,发现TIM_TimeBaseInitTypeDef 结构体中的一个参数TIM_RepetitionCounter一直没用,查查资料,这个值是计数值满溢出几次才进入中断,就试着把这个值也初始化为0,发现步进电机变快了,测量波形,定时器OK。


voidcs_Timer_Init(void)//TIM1us级

{

TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

/*Timebaseconfiguration*/

TIM_TimeBaseStructure.TIM_Period=1000;

TIM_TimeBaseStructure.TIM_Prescaler=71;

TIM_TimeBaseStructure.TIM_ClockDivision=0;

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;

TIM_TimeBaseStructure.TIM_RepetitionCounter=0;//修改此处

TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);

TIM_ClearITPendingBit(TIM1,TIM_IT_Update);

TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);

}




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > STM32高级定时器用于普通定时,定时周期变长 -
 

"STM32高级定时器用于普通定时,定时周期变长 -"的相关文章

网站地图

围观()