初级会员

- 积分
- 142
- 金钱
- 142
- 注册时间
- 2018-3-29
- 在线时间
- 17 小时
|
1金钱
我用stm32f103做了一个小车,串口1控制前进、后退、左、右,程序刚运行时(刚开机或复位)第一个指令能正常运行,第二次以后的指令前进和后退指令就没反应了,左和右正常。求大神指教,第一次用stm32做小车。下面附上一段小车控制的代码:
/******************停止**************************************/
void stop(void)
{
Right1=0; Right2=0;
Left1=0; Left2=0;
TIM_SetCompare1(TIM3,0); //ÓÒ
TIM_SetCompare2(TIM3,0); //×ó
}
/******************前进**************************************/
void forward(void)
{
Right1=1; Right2=0;
Left1=1; Left2=0;
TIM_SetCompare1(TIM3,PW1);
TIM_SetCompare2(TIM3,PW2);
}
/******************后退**************************************/
void backward(void)
{
Right1=0; Right2=1;
Left1=0; Left2=1;
TIM_SetCompare1(TIM3,PW1);
TIM_SetCompare2(TIM3,PW2);
}
/******************左*************************************/
void left(void)
{
Right1=1; Right2=0;
Left1=0; Left2=1;
TIM_SetCompare1(TIM3,PW1);
TIM_SetCompare2(TIM3,PW2);
}
/******************右**************************************/
void right(void)
{
Right1=0; Right2=1;
Left1=1; Left2=0;
TIM_SetCompare1(TIM3,PW1);
TIM_SetCompare2(TIM3,PW2);
}
|
最佳答案
查看完整内容[请看2#楼]
不是的,那个是假象,strcpy它不会管你的字符串有多长,会一直比较到某个字符串中出现'\0'或者是两个字符串对应的字母不相等的时候。而你发回电脑显示,则使用了串口接收缓冲区的长度,发到电脑上的数据来看当然是正确的。
楼主不妨在完成每个字符串的判断,在完成flag的赋值后把flag中的数值通过串口输出。说不定会发现问题。
|