STM32F103 USART發送資料本來設定為無校驗,資料發送一直沒問題,現在需要設定為偶校驗,結果把暫存器配置為偶校驗后,開機第一次向DR暫存器寫入資料時TXE和TC標志位都在置位狀態,寫入第一個位元組資料后,兩個標志位就都變為0了,再也不置位了,請問各位大佬這到底是是什么原因啊,我覺得是資料一直沒發出去,但是不知道怎么解決,求大佬們教教我。
這是發送代碼
ENUM_DEVICE_ERROR PAL_RS485WriteByte(struct dal_port_type* type,uint8 byte)
{
uint32 index;
delayTime = RS485_Send_Delay_Count;
OSSchedLock();
RS485_Send_En;
while (!(UART4->SR & USART_FLAG_TXE));
UART4->DR = (byte & (uint16_t)0x01FF);
for(index = 0; index < delayTime;index++);
RS485_Rev_En;
OSSchedUnlock();
return DEVICE_OK;
}
在While回圈里一直出不去了
uj5u.com熱心網友回復:

uj5u.com熱心網友回復:
這個地方是正確的嗎?uj5u.com熱心網友回復:
STM32的串口通信有一個地方要注意,無校驗是8位資料,奇偶校驗是9位,估計是你這里出錯了uj5u.com熱心網友回復:
“現在需要設定為偶校驗”可實際上你設了奇校驗!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/100103.html
標籤:單片機/工控
上一篇:基于stm32的藍牙小車
