微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 串口数据接收问题

串口数据接收问题

时间:10-02 整理:3721RD 点击:

做了个串口传输数据的程序,从机向主机发送数据的时候,20字节自动分包,现在是在串口回调函数中加了延时实现的

static void NpiSerialCallback( uint8 port, uint8 events )
{
  (void)port;
  uint8 numBytes = 0;
  uint8 buf[128];
  uint8 send_byte_cnt=0;
  attHandleValueNoti_t pNoti;
  int i=0;
  for(i=20000;i>0;i--)
  {
    asm("nop");
  }
  if (events & (HAL_UART_RX_TIMEOUT))   
  {
    numBytes = NPI_RxBufLen();
    if(numBytes)

现在的问题是修改了波特率,延时时间也要做修改,怎样做可以不用延时。
回调函数能不能做成串口接收数据20个字节以上才能进入。

Hi ethan

不要这样Hold住CPU狂延时,这样其他任务的都得不到执行。

你可以每次到进来回调函数时就将数据读入到一个缓存,下次再进来时继续将数据存入到该缓存,

这样分批分次地将数据接收完成。

HI shaokai,

具体怎样去做呢,怎样判断串口数据有没有接收完成,串口缓冲需要用到队列吗?

Hi ethan

      具体要看你的程序设计,我个人比较推荐的方法是使用简单的队列。

建议用中断接收。

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

网站地图

Top