通信协议
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调试代码,可自己尝试开发