提示:这里简述项目相关背景:
stm32的串口与外设直连,stm32程序中接收来自外设的消息。
问题描述
提示:这里描述项目中遇到的问题:
之前采用的是rtt的dma接收方式;
不知为何串口接收到的数据总会随机出现些乱码,但每条消息却是完整的。
解决方案:提示:这里填写问题的分析:
可能是电路收到了干扰,或者是外设没有按协议发送了其他的数据过来。
提示:这里填写该问题的具体解决方案:
改用中断接收的方式,且判断头尾的0xC0.
void data_process(void)
{
unsigned char ch;
unsigned char data[LEN]={0};
static unsigned int i = 0;
static unsigned char flag = 0;
while(1)
{
ch = uart_sample_get_char();
data[i++] = ch;
if(ch == 0x0c)
{
flag = 1;
}
else if(flag == 0)
{
i = 0;
rt_memset(&data,0x00,sizeif(data));
}
if(flag == 1)
{
if((ch == 0x0c)&&(i>2))
{
rt_device_write(serial, 0, data, i);
flag = 0;
i = 0;
rt_memset(&data,0x00,sizeif(data));
continue;
}
}
}
}



