首页 > 其他 > 详细

stm32串口之存储与解析

时间:2015-12-06 14:31:15      阅读:164      评论:0      收藏:0      [点我收藏+]

    最近在做一个小项目,需要用stm32串口接受Arduino发送的一个不定长的数据,并且解析数据,执行其中的命令;秉着不在中断中做过多任务的思想,我们将从串口中接受到的字符放到一个数组当中。

    定义数组

#define MAX_LENTH 100
#define u8 unsigned char
u8 getCharFromArduino[MAX_LENTH];

    串口中断函数

u8 *theNextCharAddress = getCharFromArduino;     //指针指向下一个存储位置
void USART1_IRQHandler(void) { static u8 n=0; if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { *theNextCharAddress = USART_ReceiveData(USART1);  //存储数据 theNextCharAddress++;             //指针指向下一个存储位置
if(theNextCharAddress < getCharFromArduino[MAX_LENTH])    //形成一个环形的存储空间 {   //do noting } else{theNextCharAddress = GETCHARNUMBER;} theNextCharAddress = &getCharFromArduino[n]; } }

   主函数中的解析函数

void dealDataFromArduino()
{
	static u8 *p = getCharFromArduino;  
	
	if(p == theNextCharAddress)      //解析完毕
	 {
		//Do Nothing
	 }
	else
	 {
		//解析
	 }
p++;                   //指针指向下一个解析位置
if(p < &getCharFromArduino[GETCHARNUMBER])
     {
      //do noting
     }
    else
     {
       p = getCharFromArduino;
     }
}

 


这是一种比较简单的接受,处理串口数据的方法;缺点是若存储的速度>>读取的速度时,数据发生了丢失却没有报错;

 

第一次发博客,希望各路看官批评指导。

 

stm32串口之存储与解析

原文:http://www.cnblogs.com/simonlin/p/5023566.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!