我目前使用 ch32v203 工作正常。 附件是 ch32v203 的 uart 代码,其中在发送完美运行的新字节之前检查传输完成标志。 但是当使用ch582时我发现很难发送。 UART0_SendString 函数工作正常,但如果您立即使用 UART0_SendByte,则并非所有完整字符串都从先前的 sendstring 函数传输。 我找不到像 32v203 中那样的传输完成标志。
请为此建议一个代码片段。
//CH32V203?code void?USART1_PrintS(u8?*uart_text) { ????while(*uart_text)???????????????????????????????????????????????????????????//?While?not?end?of?text ????{ ????????while(USART_GetFlagStatus(USART1,?USART_FLAG_TC)?==?RESET); ????????USART_SendData(USART1,*uart_text); ????????uart_text++; ????} }
//CH582?code void?UART0_SendString(uint8_t?*buf,?uint16_t?l) { ????uint16_t?len?=?l; ????while(len) ????{ ????????if(R8_UART0_TFC?!=?UART_FIFO_SIZE) ????????{ ????????????R8_UART0_THR?=?*buf++; ????????????len--; ????????} ????} }
//如果所有?UART0_SendByte?都被删除,则?sendstring?会正确打印所有字符,否则不会。 UART0_SendString("Hello?World\r\n",13); UART0_SendByte('O'); UART0_SendByte('K'); UART0_SendByte(13); UART0_SendByte(10);
您能否发送一个代码片段以在没有任何 FIFO 的情况下使用? 我还没有测试接收部分,我需要中断每个字节(标准 uart 兼容)。