改為串列埠中斷接收方式,發現也只能進入一次接收中斷函式,把開啟中斷函式放入接收中斷函式內,可以連續進入接收中斷函式了,但是資料丟失的問題仍然存在,又經過一番除錯發現將處理資料函式從接收中斷函式中取出,問題就解決了。
然而採用串列埠dma方式時,將處理函式從中斷函式中取出,讀取的資料還是錯誤的。
唉,現在可以收到正確的資料了,不打算進一步找錯誤了,感覺hal庫的小問題有點多。
為了嚴謹,判斷是接到資料之後進入中斷後,再從緩衝區將資料讀出,在中斷處理函式中加入flag_rx
void usart1_irqhandler(void)
在while (1)裡當flag_rx==1時,對資料進行處理。
while (1)
printf("press\r\n");
printf("%d\r\n",press_data[0].back);
printf("%d\r\n",position_data[0].back);
delay();
}在處理函式內一定要將緩衝區的資料完全讀出來,串列埠的資料暫存器才會更新。
stm32串列埠通訊
通訊方式 1 同步通訊 帶時鐘同步訊號傳輸 spi,iic等 2 非同步通訊 不帶時鐘用途訊號 usrt,單匯流排 stm32串列埠引腳表 串口號 rxd txd 1 pa10 pa9 2 pa3pa2 3 pb11 pb10 4 pc11 pc10 5 pd2pc12 通訊過程 接收過程 由rx入...
STM32串列埠通訊
1.常用的串列埠相關暫存器 1 usart sr狀態暫存器,對應的庫函式 flagstatus usart getflagstatus usart typedef usartx,uint16 t usart flag 2 usart dr資料暫存器,對應的庫函式 void usart senddat...
STM32串列埠通訊
串列埠作為mcu最重要的外部介面,同時也是軟體開發重要的除錯手段,其重要性不言而喻。在這裡我們主要從庫函式的角度來講述如何設定串列埠,來達到最基本的通訊功能。串列埠的設定一般可以歸結為以下幾個步驟 1 串列埠時鐘使能,gpio時鐘使能。2 設定引腳復用器對映,呼叫gpio pinafconfig函式...