|
本帖最后由 sqhua333 于 2016-5-13 14:29 編輯
#define USART_Tx_DATA_SIZE 128 //緩存區大小
uint8_t USART_Tx_Buffer[USART_Tx_DATA_SIZE]; //分配緩存區
uint8_t USART_Tx_flag = 0; //標記緩存區是否有數據
uint32_t USART_Tx_ptr_in = 0; //發送隊列尾指針
uint32_t USART_Tx_ptr_out = 0; //發送隊列頭指針,即將被發送的數據
uint32_t USART_Tx_length = 0; //發送區為發送數據的長度
/**************************************************************************************************************
*經過這樣分配后,通過串口發送數據變成了向緩存隊列寫入數據,中斷函數完成數據的發送。除執行中斷函數外,其他時間,
*CPU可以干任何的其他事情。這就解決了發送串口數據占用時間過長的問題。
*穩定性還是挺高,只是會頻繁的產生中斷。
*BUG;當工程中有USB bulk通信和串口一起通信時,USB中斷會干擾串口,導致亂碼。
***************************************************************************************************************/
|
評分
-
查看全部評分
|