TI中文支持网
TI专业的中文技术问题搜集分享网站

串口数据接收问题

做了个串口传输数据的程序,从机向主机发送数据的时候,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个字节以上才能进入。
shaokai Lin:

Hi ethan

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

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

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

ethan:

回复 shaokai Lin:

HI shaokai,

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

shaokai Lin:

回复 ethan:

Hi ethan

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

da qin zheng sheng:

建议用中断接收。

赞(0)
未经允许不得转载:TI中文支持网 » 串口数据接收问题
分享到: 更多 (0)