最近使用STM32F107在進行開發(fā),用CUBEMX配置UART作為串口和上位機通訊,然而一直無法接收到數(shù)據(jù),調(diào)試了一個上午,硬件檢查過,包括重寫RX回調(diào)函數(shù)都試過了,但就是無法正常接收數(shù)據(jù)。
之后找了一個重寫回調(diào)的函數(shù),移植程序結(jié)構(gòu),編譯執(zhí)行發(fā)現(xiàn)在執(zhí)行其中的 HAL_UART_Receive_IT 這一函數(shù)后,會能接收一次中斷發(fā)出的數(shù)據(jù)(也就是復(fù)位后能進入一次中斷),懷疑是因為HAL的bug或者cubemx生成代碼有bug!進入該函數(shù)內(nèi)部,最后篩選出兩條代碼添加在主函數(shù)循環(huán)前,以及中斷處理函數(shù)末尾,串口就能正常進入中斷了。
這兩句為:
__HAL_UART_ENABLE_IT(&huart4, UART_IT_ERR)
__HAL_UART_ENABLE_IT(&huart4,UART_IT_RXNE)
可以看主要只是第二參數(shù)變化,這一宏定義函數(shù)主要功能是將中斷控制寄存器置參數(shù)二的位置,也就是重置了ERR和RXNE標志位
中斷處理函數(shù)的參考代碼:
void UART4_IRQHandler(void)
{
char aRxBuffer[1];
HAL_UART_Transmit(&huart4,"Hello,Enter Interrupt\r\n",26,0xFFFF);
HAL_UART_IRQHandler(&huart4);
/* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */
__HAL_UART_ENABLE_IT(&huart4, UART_IT_ERR);
/* Enable the UART Data Register not empty Interrupt */
__HAL_UART_ENABLE_IT(&huart4, UART_IT_RXNE);
}
上一篇:【STM32CubeMX】HAL庫中斷方式UART串口通信
下一篇:STM32F407 串口接收中斷的使用
推薦閱讀
史海拾趣
設(shè)計資源 培訓 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- 上汽大眾:汽車網(wǎng)絡(luò)安全漏洞防護
- 恩智浦推出全新電池控制IC系列 助力新能源解決方案發(fā)展
- 全球首條GWh級新型固態(tài)電池生產(chǎn)線樣件下線
- 總投資455億元!三大動力電池項目齊刷進度條
- 現(xiàn)代汽車韓國建氫燃料電池廠,2028年投產(chǎn)
- 6月融資一覽:智能汽車芯片、第三代半導(dǎo)體、機器人成資本焦點
- 艙駕一體“點燃”新戰(zhàn)事
- 汽車智能化2.0引爆「萬億蛋糕」,誰在改寫游戲規(guī)則?
- 2025研華智能系統(tǒng)產(chǎn)業(yè)伙伴峰會成功舉辦
- 意法半導(dǎo)體公布2025年第二季度財報和電話會議時間安排
- EEWORLD大學堂——輕松操控一切智能設(shè)備的手勢遙控器
- MATLAB APP Designer串口調(diào)試工具編寫
- 4*4*4光立方原件都是什么啊
- 超低功耗MCU的選型技巧與設(shè)計思路
- PPP協(xié)議,為什么我建立連接后不能通訊????
- 求助atmega128串口仿真
- 【零知ESP8266教程】快速入門1-讓你的開發(fā)板向世界說hello
- EEWORLD大學堂----工程更智能、工業(yè)設(shè)計更強大: TI 機器人系統(tǒng)
- 誰能給個完整的制作yaffs2或是cramfs+yaffs2文件系統(tǒng)的過程
- Serial Interface之I2C:關(guān)于DS1624 2線通信SDA保持時間的說明