This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
在自己定义了串口的callback函数之后,这个函数好像每次都会执行。
我对callback的理解是有了串口数据之后才会被执行,没有的话就不会执行。
我现在的疑问是:
1.是不是我自己串口回调函数定义写错饿了
2.如果想要达到只有来数据的时候才调用,我该怎么做?
这是我的代码:
//初始化 uartConfig.configured = TRUE; uartConfig.baudRate = HAL_UART_BR_115200; uartConfig.flowControl = FALSE; uartConfig.callBackFunc = App_CallBack; HalUARTOpen (UART0, &uartConfig); HalUARTWrite (UART0, "Uart init ook!\n", sizeof("Uart init ook!\n")); //callback static void App_CallBack(uint8 port, uint8 event) { (void)port; #if defined(ZDO_COORDINATOR) uint8 rxlen=0, addr, FC; uint8 checksum=0; rxlen = HalUARTRead(UART0, UARTRxBuf, UART_TX_BUFFER_LEN); if (rxlen) { HalUARTWrite(UART0, UARTRxBuf, rxlen); } #else #endif
我只能用接受缓冲的长度来防止不停的输出,不知道可有其他办法?
感觉在轮询一样,这样会不会很消耗资源?
另:
我觉得是不是每次callback之后都要把缓冲区清除掉,下次才不会再次进入这个函数?如果是的话,该怎么做呢?