新手上路
- 积分
- 34
- 金钱
- 34
- 注册时间
- 2018-1-31
- 在线时间
- 10 小时
|
24金钱
如题,在main函数里的串口处理语句里,我实现了通过串口发数据,开发板转换数据的功能:发送(+/-)x,例如发送+10表示原pwm的值+10,发送1235表示把原来pwm值直接赋值为1235
问题是发送数据的时候,开发板经常卡死,不知为什么。
if(USART_RX_STA&0x8000) //1000 0000 0000 0000,收到消息时执行
{
len=USART_RX_STA&0x3fff; //得到此次接收到的数据长度0011 1111 1111 1111
tem = 0;
s = 1;
if(USART_RX_BUF[0] == '+'){ //如果输入为+xx如+10,那么在原来pwm值上+10
s = 1;
for(t = len - 1;t > 0;t--) //tem存储串口读取的数值将USART_RX_BUF[]转换成一个数值
{
tem += (USART_RX_BUF[t] - 48)*s;
s *= 10;
}
PwmVal += tem;
}
else if(USART_RX_BUF[0] == '-'){ //如果输入为-xx如-10,那么在原来pwm值上-10
tem = PwmVal;
s = 1;
for(t = len - 1;t > 0;t--)
{
if(tem < (USART_RX_BUF[t] - 48)*s){
tem = 0;
t = 1;
}
else
tem -= (USART_RX_BUF[t] - 48)*s;
s *= 10;
}
PwmVal = tem;
}
else //直接给pwm赋值
{
s = 1;
for(t = len - 1;t > 0;t--)
{
tem += (USART_RX_BUF[t] - 48)*s;
s *= 10;
}
tem += (USART_RX_BUF[0] - 48)*s;
PwmVal = tem;
}
USART_RX_STA=0;
}
|
|