在用ch32v307rct6 做一個(gè)串口交互的程序:想要先輸出一個(gè)提示符號(hào)'#' 然后回顯鍵入的非0x0d/0x0a 的字符,當(dāng)鍵入0x0d/0x0a 后,顯示整個(gè)字符串,換新行,顯示'#'. 重復(fù)上述過程。
void usart_printf_test(void)
{
? ? uint8_t c,vnIn ;
? ? char vsBuf[64] = {0};
? ? printf("#");
? ? while(1) {
? ? ? ? if((c = USART_getchar())== 0x1b) break;
? ? ? ? if((c == 0x0d )||(c == 0x0a)) {
? ? ? ? ? ? if(vsBuf[0] != '\0') printf("%s",vsBuf);
? ? ? ? ? ? printf("\r\n");
? ? ? ? ? ? for(vnIn= 0; vnIn < 64; vnIn++) vsBuf[vnIn] = 0;
? ? ? ? ? ? vnIn = 0;
? ? ? ? ? ? printf("#");
? ? ? ? }
? ? ? ? else {
? ? ? ? ? ? printf("%c",c);
? ? ? ? ? ? vsBuf[vnIn++] = c;
? ? ? ? ? ? if(vnIn == 64) vnIn = 0;
? ? ? ? }
? ? }
? ? return ;
}
上述代碼在keil 上編譯下載到stm32f103 上沒問題,移植到ch32v307 在MRS 編譯下載到ch32v307 上始終不對(duì),只按回車鍵,ch32v307 應(yīng)該會(huì)送的字符時(shí):0x0d 0x0a 0x23(#) , 但實(shí)際送回的順序是:0x23 0x0d 0x0a ,無法實(shí)現(xiàn)在提示符后顯示鍵入字符的功能。