微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机之串口数据处理

单片机之串口数据处理

时间:11-10 来源:互联网 点击:

  1. u8 AU_Buf[AU_BUF_ZISE] = {0};
  2. DF_RCV AU_Rvc = {0, 0,AU_BUF_ZISE,AU_Buf};

复制代码

2. 编写数据接收函数

本函数把串口数据放入缓冲区中,此函数必须在串口中断中调用。

  1. /**************************************************************************************
  2. * FunctionName : AURcvDat()
  3. * Description : 串口数据接收(串口中断服务调用)
  4. * EntryParameter : None
  5. * ReturnValue : None
  6. **************************************************************************************/
  7. void AURcvDat(u8 dat)
  8. {
  9. DFWriteByte(dat, &AU_Rvc);
  10. }

复制代码

3. 数据处理函数

本函数判断缓冲区中是否有数据,如果有,逐个读取并处理。

  1. /**************************************************************************************
  2. * FunctionName : AUTaskCtrl()
  3. * Description : 通信数据处理
  4. * EntryParameter : None
  5. * ReturnValue : None
  6. **************************************************************************************/
  7. void AUTaskCtrl(void)
  8. {
  9. u8tmpDat;
  10. u16 i, len = 0;
  11. static u8 sendMark = 0;
  12. len = DFGetLen(&AU_Rvc); // 获取未读数据长度
  13. for (i=0; i < len; i++)
  14. {
  15. tmpDat = DFReadByte(&AU_Rvc); // 读一字节数据
  16. AU_PrcRcvDat(tmpDat);
  17. }
  18. }

复制代码

函数AU_PrcRcvDat(tmpDat)是数据处理函数,首先是数据帧判断,如果是一帧数据,就进行相应操作,并把操作结果返回。了解了这个过程,串口的编程就变得非常简单。而且我们在读程序时,只要看懂一个串口处理过程,其他串口的程序就自然懂了,非常方便吧。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top