本例程用while
循环收发串口数据,可以收发变长数据。
main主程序流程
int main(void)
{
u8 rx_cnt = 0, tx_flag;
InitSystick();
RCC_ConfigInit();
GPIO_ConfigInit();
Uart_ConfigInit(9600);
UartSendGroup((u8*)printBuf, sprintf(printBuf, "sprintf ok\r\n")); //pintf stdio data
UartSendAscii("UartSendAscii\r\n"); //printf string
UartSendAscii("Please input data ,end with '\\n' \r\n");
while(1) {
if(UART_GetFlagStatus(UART, UART_FLAG_RXAVL) == SET) { //check receive status
UART_ClearFlag(UART, UART_FLAG_RXAVL);
printBuf[rx_cnt % 100] = UART_ReceiveData(UART);
if( printBuf[rx_cnt % 100] == '\n') { //check '\n',and set send flag;
tx_flag = 1;
}
rx_cnt++;
}
if(tx_flag != 0) {
UartSendGroup((u8*)printBuf, rx_cnt); //send data;
rx_cnt = 0; //claer receive count;
tx_flag = 0; //clear send flag;
}
}
}
官方例程的修正已基本完成,需要程序的同学可以到百度网盘下载。
提取码:0o5i
网友评论