做了个串口传输数据的程序,从机向主机发送数据的时候,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:
建议用中断接收。
TI中文支持网


