初级会员

- 积分
- 162
- 金钱
- 162
- 注册时间
- 2019-9-27
- 在线时间
- 37 小时
|

楼主 |
发表于 2019-11-20 22:38:42
|
显示全部楼层
我写了CUSTOM_HEX的通信协议。如果要MODBUS RTU改一下就可以。(407探索者开发板)
附串口2中断函数:
u8 Res,clear;
u8 Rx_Counter=0;
if(USART_GetITStatus(USART2, USART_IT_RXNE)!= RESET)
{
Res=USART_ReceiveData(USART2);//(USART1->DR); //读取接收到的数据束
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束
if (Res==0xB4)//接收到帧头
{
USART2_RX_STA=0;
// a++;
// USART2_RX_BUF[Rx_Counter++]=USART_ReceiveData(USART2); //接收一字节数据存入数组中 else USART2_RX_STA=0;//接收错误,重新开始
}
USART2_RX_BUF[Rx_Counter++]=USART_ReceiveData(USART2);
}
else if(USART_GetITStatus(USART2,USART_IT_IDLE)!= RESET)
{
b++;
USART_ReceiveData(USART2); //此处一定要有,这是用于清除IDLE空闲标志位的
// USART_ClearFlag(USART2,USART_FLAG_IDLE);
USART2_RX_STA|=0x8000; //接收完一帧数据标志
} |
|