高中生
最后登录1970-1-1
在线时间 小时
注册时间2018-3-10
|
我想利用L298N控制直流电机的正反转,当前控制一个直流电机,输入口IN1,IN2。一个接pwm输出口,一个接到GND。想通过定时器,运行10秒的正转,停10秒,再运行10秒的正转。但是现在出现的情况是第一次运行到10秒后,电机确实停了下来,但是再过10秒后,电机应该恢复转动,但却再也没有动过。我通过示波器查看波形也是只有在第一个10s的时候波形从pwm波变成了0.再到第二个10s的时候就无法再恢复到原来的pwm波了。
以下是关于代码的解释Second代表1s,根据Flag的奇偶来判断电机是否动作。但是却只能动第一次。是不是我要关闭的TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Disable;不对。应该使用别的关闭函数吗?TIM_OC1PreloadConfig(ADVANCE_TIM, TIM_OCPreload_Enable);TIM_Cmd(ADVANCE_TIM, ENABLE); 我都试过 都不能按我想的去运行,只能第一次动作时有效。请问这是什么原因呢?
串口发送发过来的数据,函数确实已经运行了
[mw_shl_code=c,true]
TIM_OCInitTypeDef TIM_OCInitStructure;
if(Second == 10)
{
Second = 0;
Flag++;
if(Flag %2 == 0)
{
TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable;
printf("TIM_OutputState_Enable\r\n");
}
else
{
TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Disable;
printf("TIM_OutputState_Disable\r\n");
}
TIM_OC1Init(ADVANCE_TIM, &TIM_OCInitStructure);
}[/mw_shl_code]
|
|