栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

串口接收填坑记

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

串口接收填坑记

项目场景:

提示:这里简述项目相关背景:

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;					
			}
		}
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928839.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号