最近在學習物聯(lián)網(wǎng)相關的知識,打算用ST的開發(fā)板STM32F407ZGT6作為控制中心,上面搭載FreeROTS實時系統(tǒng),STM32F407開發(fā)板作為 TCP client,網(wǎng)絡調(diào)試助手作為TCP server,利用串口獲取兩者的連接狀態(tài)。在用原子的lwip工程移植到自己的STM32F407開發(fā)板時,可以正常獲取DHCP分配的IP,也能通過網(wǎng)絡和網(wǎng)絡工具正常通信,但是串口一直提示錯誤:
從port.c文件中,定位到該行。
從文件中來看,應該是和中斷有關的,從網(wǎng)上查閱了很多資料發(fā)現(xiàn),首先懷疑串口的中斷的優(yōu)先級超過FreeRTOS的管理最高優(yōu)先級,需要將串口中斷的優(yōu)先級降為FreeRTOS的管理最高優(yōu)先級以下就可以。
據(jù)此,分別確認以下中斷配置:主函數(shù)中,(1)系統(tǒng)中斷優(yōu)先級分組,位于main.c文件(2)串口中斷,位于usart.c文件(3)FreeRTOS系統(tǒng)可以管理的中斷最高優(yōu)先級,位于freertosconfig.h文件
可以發(fā)現(xiàn),串口中斷的優(yōu)先級為3,freeRTOS最大可管理的中斷優(yōu)先級是5(中斷級小于等于5,freeRTOS無法管理),中斷優(yōu)先級更改為6,發(fā)現(xiàn)不行。再繼續(xù)查閱資料。
發(fā)現(xiàn)在ethernetif.c源碼中,low_level_input中有一個pbuf_alloc,而源碼中恰恰有sys_arch.c的sys_arch_protect()和sys_arch_unprotect()的臨界保護
而low_level_input是在中斷中調(diào)用的。
發(fā)現(xiàn)參考DEMO的sys_arch.c中的sys_arch_protect()和sys_arch_unprotect()是使用的任務級的臨界保護,所以芯片會出現(xiàn)未知的異常。
發(fā)現(xiàn)編譯下載到板卡中,串口還是會出現(xiàn)同樣的問題。
此外sys_mbox_trypost也要用中斷級入隊函數(shù)。
修改后,重新編譯下載,串口打印ok.
出現(xiàn)這個問題應該就是在中斷中調(diào)用了任務級臨界保護,建議逐條查看中斷中調(diào)用的函數(shù)中是否用到了任務級臨界保護。
-
FreeRTOS
+關注
關注
12文章
484瀏覽量
62344 -
LwIP協(xié)議
+關注
關注
0文章
11瀏覽量
8942 -
串口中斷
+關注
關注
0文章
67瀏覽量
13979 -
DHCP網(wǎng)絡
+關注
關注
0文章
2瀏覽量
4936 -
STM32F407ZGT6
+關注
關注
4文章
4瀏覽量
4866
發(fā)布評論請先 登錄
相關推薦
為什么探索者stm32f407移植UCOSIII+LWIP1.4.1后無法穩(wěn)定運行?
lwip帶freertos操作系統(tǒng)移植代碼分享!
freeRTOS+LWIP在STM32F407上的移植分享!
STM32F407+ucos-iii+lwip1.4.1移植分享!
請問有reeRTOS+STM32F407ZGT和lwip1.4.1+dp83848程序嗎?
STM32F107+LWIP+FreeRTOS 精選資料分享
請問一下在FreeRTOS系統(tǒng)下的LwIP-1.4.1是怎樣移植的
如何實現(xiàn)FreeRTOS系統(tǒng)下LwIP-1.4.1的移植?
STM32F107VCT6+DP83848 移植 LWip-1.4.1 筆記
FreeRTOS-stm32f407移植
![<b class='flag-5'>FreeRTOS-stm32f407</b><b class='flag-5'>移植</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
【STM32】FreeRTOS移植
![【<b class='flag-5'>STM32</b>】<b class='flag-5'>FreeRTOS</b><b class='flag-5'>移植</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用STM32CubeMX對F407ZGT6移植LWIP(全網(wǎng)最全)
![使用<b class='flag-5'>STM32</b>CubeMX對<b class='flag-5'>F407</b>ZGT6<b class='flag-5'>移植</b><b class='flag-5'>LWIP</b>(全網(wǎng)最全)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
CUBE配置STM32H750、Lan8720、FreeRTOS、lwip、掉線重連、KeepAlive移植
![CUBE配置<b class='flag-5'>STM32</b>H750、Lan8720、<b class='flag-5'>FreeRTOS</b>、<b class='flag-5'>lwip</b>、掉線重連、KeepAlive<b class='flag-5'>移植</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論