int main(void)
{
my_USART_Config();
uint8_t buffer[6];
buffer[0]=0x31;
buffer[1]=0x32;
buffer[2]=0x32;
buffer[3]=0x30;
buffer[4]=0x63;//high
buffer[5]=0xba;
while(1)
{
for(uint8_t i=0;i<6;i++)
{
COM_Sendchar(buffer[i]);
}
delay_ms(1000);
}
}
本來打算做modbus的crc16檢驗,但是每次當buffer[0]~buffer[5]的十六進制通過回圈連發時串口除錯助手總會出現0x3F,我尋思著0xba也沒超過uint8_t(0~255)的范圍呀,于是去單步發送,發現單次發送資料的時候結果是正常的,感覺出錯就出錯在了0xba這個點上。
這是發送單個字符的函式定義:
void COM_Sendchar(uint8_t ch)
{
USART_SendData(USART1,ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
}
沒有沒大佬來解決一下的...
uj5u.com熱心網友回復:
USART_FLAG_TC 改 USART_FLAG_TXE 試試uj5u.com熱心網友回復:
while (!(USART1->SR & USART_FLAG_TXE));uj5u.com熱心網友回復:
發送完,判斷下發送的是否正確uj5u.com熱心網友回復:
應該還是你查詢的標志不對,看看對應系列的庫函式或者例程轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/125516.html
標籤:單片機/工控
上一篇:Java作業流引擎全域變數的介紹
