STM32 学习日记(一)通讯协议

通信协议

1.通讯协议是什么?
简单来讲就是暗号。
可以说是一个单片机向另外一个单片机,用串口发送信息时要加暗号,暗号对,自己人。暗号错,拒绝并警惕。
2.通讯协议的内容是什么?
简答来说是数据。
1.普通协议,适合自主开发
数据包含 数据包开始标志+数据长度+任务号+执行数据+校验和+数据包结束标志(也是中断接收完成的标志,由多个十六进制数组成,并且要保证接执行数据中不存在的)
上代码:

if(USART3_RX_STA&0x8000)//接收完成的标志
		{	
	    len=USART3_RX_STA&0x3fff;
			USART3_RX_STA=0;
			if(USART3_RX_BUF[0]==0x0a&&USART3_RX_BUF[len-1]==0x08)
			{
				if(USART3_RX_BUF[1]==len)
				{
					check=0;
					for(i=1;i<len-2;i++)
				{ 
				 check=check+USART3_RX_BUF[i];
				
				}
				if(check==USART3_RX_BUF[len-2])
				{
					switch(USART3_RX_BUF[2])
					{
						case 0x01:
							if(USART3_RX_BUF[3]==0x01)
							{
						     
							}
							USART_SendData(USART3,0x16);
						 break;
						case 0x02:
						    a=USART3_RX_BUF[3];b=USART3_RX_BUF[4];
						    USART_SendData(USART3,0x16);
						 break;
						default:
							USART_SendData(USART3,0x15);
							break;
					}
				}else USART_SendData(USART3,0x15);
				}else USART_SendData(USART3,0x15);
			}else USART_SendData(USART3,0x15);
		}
		
     
		//

测试 0a 07 01 02 02 0c 08 0d 0a
注释看图吧,复制过来乱码了
在这里插入图片描述
在这里插入图片描述
注意的是:一定要避免通讯堵塞,一要设置最大接收数据长度,二是定时。
置最大接收数据数据长度:要合理
任务超时:计算最大的数据传输时长为界限
STM32F1通信协议代码,希望各位支持一下
STM32F4通信协议代码,希望各位支持一下
程序是一样的,我没有f7的开发板,如果有需要的,我就弄个f7的。
2.MOTERCTR协议,适合互联网开发
其实MOTERCTR协议就是CRC校验,就是一堆数据最后两位为CRC检验。
如图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接收一堆数据,计数它的高8位和底8位这两个校验位是否正确·,正确自己人,错误拒绝并警惕。
STM32F7课程学习的程序代码,来自老师手笔
若有需求,私信我,我就更改为F1或F4的程序。

通讯协议不仅仅是个协议,更是程序的生命,协议一定要复杂点,那么别人就不能轻易黑你的产品,现在流行手机当作上位机,大家有兴趣,就下载我弄的app源码,修改成您的专属产品
WIFI调试代码,可自己尝试开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值