0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F407+FreeRTOS+LWIP1.4.1移植問(wèn)題記錄

冬至子 ? 來(lái)源:不懂幽默的秦二 ? 作者:diandianmo ? 2023-07-21 14:09 ? 次閱讀

最近在學(xué)習(xí)物聯(lián)網(wǎng)相關(guān)的知識(shí),打算用ST的開(kāi)發(fā)板STM32F407ZGT6作為控制中心,上面搭載FreeROTS實(shí)時(shí)系統(tǒng),STM32F407開(kāi)發(fā)板作為 TCP client,網(wǎng)絡(luò)調(diào)試助手作為TCP server,利用串口獲取兩者的連接狀態(tài)。在用原子的lwip工程移植到自己的STM32F407開(kāi)發(fā)板時(shí),可以正常獲取DHCP分配的IP,也能通過(guò)網(wǎng)絡(luò)和網(wǎng)絡(luò)工具正常通信,但是串口一直提示錯(cuò)誤:

圖片

從port.c文件中,定位到該行。

圖片

從文件中來(lái)看,應(yīng)該是和中斷有關(guān)的,從網(wǎng)上查閱了很多資料發(fā)現(xiàn),首先懷疑串口的中斷的優(yōu)先級(jí)超過(guò)FreeRTOS的管理最高優(yōu)先級(jí),需要將串口中斷的優(yōu)先級(jí)降為FreeRTOS的管理最高優(yōu)先級(jí)以下就可以。

據(jù)此,分別確認(rèn)以下中斷配置:主函數(shù)中,(1)系統(tǒng)中斷優(yōu)先級(jí)分組,位于main.c文件(2)串口中斷,位于usart.c文件(3)FreeRTOS系統(tǒng)可以管理的中斷最高優(yōu)先級(jí),位于freertosconfig.h文件

圖片

圖片

圖片

可以發(fā)現(xiàn),串口中斷的優(yōu)先級(jí)為3,freeRTOS最大可管理的中斷優(yōu)先級(jí)是5(中斷級(jí)小于等于5,freeRTOS無(wú)法管理),中斷優(yōu)先級(jí)更改為6,發(fā)現(xiàn)不行。再繼續(xù)查閱資料

發(fā)現(xiàn)在ethernetif.c源碼中,low_level_input中有一個(gè)pbuf_alloc,而源碼中恰恰有sys_arch.c的sys_arch_protect()和sys_arch_unprotect()的臨界保護(hù)

而low_level_input是在中斷中調(diào)用的。

發(fā)現(xiàn)參考DEMO的sys_arch.c中的sys_arch_protect()和sys_arch_unprotect()是使用的任務(wù)級(jí)的臨界保護(hù),所以芯片會(huì)出現(xiàn)未知的異常。

圖片

圖片

圖片

發(fā)現(xiàn)編譯下載到板卡中,串口還是會(huì)出現(xiàn)同樣的問(wèn)題。

此外sys_mbox_trypost也要用中斷級(jí)入隊(duì)函數(shù)。

圖片

修改后,重新編譯下載,串口打印ok.

圖片

出現(xiàn)這個(gè)問(wèn)題應(yīng)該就是在中斷中調(diào)用了任務(wù)級(jí)臨界保護(hù),建議逐條查看中斷中調(diào)用的函數(shù)中是否用到了任務(wù)級(jí)臨界保護(hù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61730
  • LwIP協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    8891
  • 串口中斷
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    13798
  • DHCP網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    4919
  • STM32F407ZGT6
    +關(guān)注

    關(guān)注

    4

    文章

    4

    瀏覽量

    4797
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    為什么探索者stm32f407移植UCOSIII+LWIP1.4.1后無(wú)法穩(wěn)定運(yùn)行?

    完全相同。 2、LWIP移植參考網(wǎng)絡(luò)上移植stm32f107+ lwip1.4.1的代碼,與發(fā)燒友ucosII+
    發(fā)表于 09-29 01:38

    lwipfreertos操作系統(tǒng)移植代碼分享!

    本人在stm32f407 探索者板子上實(shí)驗(yàn)過(guò),根據(jù)原子哥lwip帶UCOS2移植的這一節(jié)視頻,做了lwipFreeRTOS
    發(fā)表于 10-18 01:45

    freeRTOS+LWIPSTM32F407上的移植分享!

    的學(xué)習(xí)資料,那我們只好自己摸索嘗試了。本帖子是一個(gè)在MDK環(huán)境下移植后的freeRTOSLWIP的工程壓縮包(在帖子最后),用于和大家共同探討移植問(wèn)題,壓縮包解壓后,在路徑
    發(fā)表于 10-23 04:36

    STM32F407+ucos-iii+lwip1.4.1移植分享!

    的固件庫(kù)不是標(biāo)準(zhǔn)庫(kù)而是HAL庫(kù),因?yàn)镠AL庫(kù)是未來(lái)的趨勢(shì)2,我的ucos-iii移植是直接從ucos官網(wǎng)下載的關(guān)于STM32F407的發(fā)行版本,ucos-iii版本號(hào) V3.04.05,15年9月份的版本STM32F407_uC
    發(fā)表于 11-10 23:05

    請(qǐng)問(wèn)有reeRTOS+STM32F407ZGT和lwip1.4.1+dp83848程序嗎?

    本人想做一個(gè)小東西。要用到以太網(wǎng),同時(shí)要支持操作系統(tǒng)。在這里求助廣大網(wǎng)友。具體如下:FreeRTOS+STM32F407ZGT+lwip1.4.1+dp83848程序,STM32F407與dp83848連接接口為RMII.如果有操作系統(tǒng)UCOSIII的也可以,謝謝。
    發(fā)表于 03-27 04:35

    STM32F107+LWIP+FreeRTOS 精選資料分享

    STM32F107+LWIP+FreeRTOS前言最近在學(xué)習(xí)LWIP的協(xié)議棧,打算移植FreeRTOS上網(wǎng)上找了資料,原子的用的是F4的平
    發(fā)表于 08-05 06:50

    請(qǐng)問(wèn)一下在FreeRTOS系統(tǒng)下的LwIP-1.4.1是怎樣移植

    請(qǐng)問(wèn)一下在FreeRTOS系統(tǒng)下的LwIP-1.4.1是怎樣移植的?有哪些移植過(guò)程?
    發(fā)表于 11-03 07:06

    如何實(shí)現(xiàn)FreeRTOS系統(tǒng)下LwIP-1.4.1移植

    如何實(shí)現(xiàn)FreeRTOS系統(tǒng)下LwIP-1.4.1移植?
    發(fā)表于 12-23 07:29

    FreeRTOS下對(duì)lwIP移植程序

    FreeRTOS下對(duì) lwIP移植程序。
    發(fā)表于 10-29 10:58 ?11次下載

    STM32F107VCT6+DP83848 移植 LWip-1.4.1 筆記

    STM32F107VCT6+DP83848 移植 LWip-1.4.1 筆記
    發(fā)表于 11-22 19:10 ?119次下載

    FreeRTOS-stm32f407移植

    FreeRTOS-stm32f407移植需要準(zhǔn)備的內(nèi)容FreeRTOS移植步驟1、添加FreeRTOS源碼1)復(fù)制源碼內(nèi)容2)刪除porta
    發(fā)表于 12-04 13:36 ?9次下載
    <b class='flag-5'>FreeRTOS-stm32f407</b><b class='flag-5'>移植</b>

    STM32FreeRTOS移植

    FreeRTOS,接下來(lái)我們就把FreeRTOS移植到我們所使用的平臺(tái)上,我們使用的板子是STM32F407。02. 預(yù)備工作要移植
    發(fā)表于 12-04 14:06 ?14次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>FreeRTOS</b><b class='flag-5'>移植</b>

    使用STM32CubeMX對(duì)F407ZGT6移植LWIP(全網(wǎng)最全)

    本項(xiàng)目采用正點(diǎn)原子的探索者STM32F407開(kāi)發(fā)板利用STM32CubeM移植LWIP使用STM32CubeMX可以非常方便的將
    發(fā)表于 12-27 18:37 ?75次下載
    使用<b class='flag-5'>STM32</b>CubeMX對(duì)<b class='flag-5'>F407</b>ZGT6<b class='flag-5'>移植</b><b class='flag-5'>LWIP</b>(全網(wǎng)最全)

    CUBE配置STM32H750、Lan8720、FreeRTOS、lwip、掉線重連、KeepAlive移植

    STM32H750VBT6+Lan8720A+FreeRTOS+lwip調(diào)試記錄2020年10月6日目錄STM32H750VBT6+Lan8720A+FreeRTOS+lwip調(diào)試記錄
    發(fā)表于 12-27 18:48 ?89次下載
    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>

    STM32F407 FreeRTOS開(kāi)發(fā)手冊(cè) V1.1

    STM32F407 FreeRTOS開(kāi)發(fā)手冊(cè)_V1.1PDF文件下載。
    發(fā)表于 07-31 11:16 ?52次下載