[mw_shl_code=c,true]u8 Rcv_Buf[100];
//串口1中断处理函数
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
{
LED0=!LED0;
UartRcvString(Rcv_Buf,56);
Rcv_Buf[56]=0x0D; //换行
Rcv_Buf[57]=0x0A;
UartSendString(Rcv_Buf,58); //将接收到的数据再发送出去
}
}
//接收一个字节
int UartRcvByte(void)
{
u8 Rcv;
Rcv=USART_ReceiveData(USART1);
while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)!=SET);
return Rcv;
}
//接收到一个字符串
int UartRcvString(u8 *ch, u8 len)
{
u8 i;
for(i=0; i<len;i++)
{
ch=UartRcvByte();
}
return 0;
}
//发送一个字节
int UartSendByte(u8 ch)
{
USART_SendData(USART1,(uint8_t)ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
return ch;
}
//发送一个字符串
int UartSendString(u8 *ch, u8 len)
{
u8 i;
for(i=0; i<len;i++)
{
UartSendByte(ch);
}
return 0;
}[/mw_shl_code]
[mw_shl_code=c,true]每次都是接收到的数据,第一次是正常的,第二次就是整个数组右移一位,并且第一位加了一个“s”,第三次就是整个数组右移了一位,最后一个数据跑到了第一个的位置;后面的就跟第三次的一样了。每次重新下载上电,都是出现这样的问题,第一次正确,第二次错误,第三次错误,后面的就跟第三次的错误一样,调了半天实在是不知道为什么,望各位大侠帮忙解答一下,感激不尽。[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
|