我目前使用 ch32v203 工作正常。 附件是 ch32v203 的 uart 代碼,其中在發(fā)送完美運(yùn)行的新字節(jié)之前檢查傳輸完成標(biāo)志。 但是當(dāng)使用ch582時(shí)我發(fā)現(xiàn)很難發(fā)送。 UART0_SendString 函數(shù)工作正常,但如果您立即使用 UART0_SendByte,則并非所有完整字符串都從先前的 sendstring 函數(shù)傳輸。 我找不到像 32v203 中那樣的傳輸完成標(biāo)志。
請(qǐng)為此建議一個(gè)代碼片段。
//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?會(huì)正確打印所有字符,否則不會(huì)。 UART0_SendString("Hello?World\r\n",13); UART0_SendByte('O'); UART0_SendByte('K'); UART0_SendByte(13); UART0_SendByte(10);
您能否發(fā)送一個(gè)代碼片段以在沒(méi)有任何 FIFO 的情況下使用? 我還沒(méi)有測(cè)試接收部分,我需要中斷每個(gè)字節(jié)(標(biāo)準(zhǔn) uart 兼容)。