CH582芯片。我尝试将printf重定向到USB。移植了BLE_USB例程中的app_usb.c,并将CH58x_sys.c中的_write函数修改为:
int _write(int fd, char *buf, int size) { #if DEBUG == Debug_USB USBSendData(buf, size); while(!EP2_GetINSta()); #else int i; for(i = 0; i < size; i++) { #if DEBUG == Debug_UART0 while(R8_UART0_TFC == UART_FIFO_SIZE); /* 等待数据发送 */ R8_UART0_THR = *buf++; /* 发送数据 */ #elif DEBUG == Debug_UART1 while(R8_UART1_TFC == UART_FIFO_SIZE); /* 等待数据发送 */ R8_UART1_THR = *buf++; /* 发送数据 */ #elif DEBUG == Debug_UART2 while(R8_UART2_TFC == UART_FIFO_SIZE); /* 等待数据发送 */ R8_UART2_THR = *buf++; /* 发送数据 */ #elif DEBUG == Debug_UART3 while(R8_UART3_TFC == UART_FIFO_SIZE); /* 等待数据发送 */ R8_UART3_THR = *buf++; /* 发送数据 */ #endif } #endif //DEBUG == Debug_USB return size; } #endif
当printf函数调用频率较低时,能够正常运行。但调用频率较高或和蓝牙协议栈同时运行时,会在运行一段时间(数十秒)后卡死,请问应如何修改?