上一篇文章分享了CVI发送数据给STM32的程序(LabwindowsCVI上位机通过串口向STM32发送数据程序分享)和STM32串口接受和发送数据的程序(USART/UART)确实已经过去很长时间了,现在才动手做接收部分属实是有些懒惰了。话不多说我们进入正题。
如果只是单纯的想接受CVI发送的数据,那其实并不困难,但是考虑到接受数据的准确性以及何时发送数据何时终止发送,我们就需要写一个简单的通讯协议(只判断帧头帧尾即可)。
除此之外,什么时候让程序运行,什么时候让程序终止也是应该考虑到的,所以我的程序如下。
if(USART_RX_STA & 0xC000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
if(len<3)
{
value1=*(USART_RX_BUF);
}
if(value1==0x31)
{
sscanf((char*)(USART_RX_BUF), "A%fA", &value); /* value为截取到的浮点数值 */
b=value;
memset(USART_RX_BUF, 0x00