0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F407+FreeRTOS+LWIP1.4.1移植问题记录

冬至子 来源:不懂幽默的秦二 作者:diandianmo 2023-07-21 14:09 次阅读

最近在学习物联网相关的知识,打算用ST的开发板STM32F407ZGT6作为控制中心,上面搭载FreeROTS实时系统,STM32F407开发板作为 TCP client,网络调试助手作为TCP server,利用串口获取两者的连接状态。在用原子的lwip工程移植到自己的STM32F407开发板时,可以正常获取DHCP分配的IP,也能通过网络和网络工具正常通信,但是串口一直提示错误:

图片

从port.c文件中,定位到该行。

图片

从文件中来看,应该是和中断有关的,从网上查阅了很多资料发现,首先怀疑串口的中断的优先级超过FreeRTOS的管理最高优先级,需要将串口中断的优先级降为FreeRTOS的管理最高优先级以下就可以。

据此,分别确认以下中断配置:主函数中,(1)系统中断优先级分组,位于main.c文件(2)串口中断,位于usart.c文件(3)FreeRTOS系统可以管理的中断最高优先级,位于freertosconfig.h文件

图片

图片

图片

可以发现,串口中断的优先级为3,freeRTOS最大可管理的中断优先级是5(中断级小于等于5,freeRTOS无法管理),中断优先级更改为6,发现不行。再继续查阅资料

发现在ethernetif.c源码中,low_level_input中有一个pbuf_alloc,而源码中恰恰有sys_arch.c的sys_arch_protect()和sys_arch_unprotect()的临界保护

而low_level_input是在中断中调用的。

发现参考DEMO的sys_arch.c中的sys_arch_protect()和sys_arch_unprotect()是使用的任务级的临界保护,所以芯片会出现未知的异常。

图片

图片

图片

发现编译下载到板卡中,串口还是会出现同样的问题。

此外sys_mbox_trypost也要用中断级入队函数。

图片

修改后,重新编译下载,串口打印ok.

图片

出现这个问题应该就是在中断中调用了任务级临界保护,建议逐条查看中断中调用的函数中是否用到了任务级临界保护。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FreeRTOS
    +关注

    关注

    12

    文章

    483

    浏览量

    61989
  • LwIP协议
    +关注

    关注

    0

    文章

    11

    浏览量

    8902
  • 串口中断
    +关注

    关注

    0

    文章

    64

    浏览量

    13855
  • DHCP网络
    +关注

    关注

    0

    文章

    2

    浏览量

    4920
  • STM32F407ZGT6
    +关注

    关注

    4

    文章

    4

    浏览量

    4824
收藏 人收藏

    评论

    相关推荐

    为什么探索者stm32f407移植UCOSIII+LWIP1.4.1后无法稳定运行?

    完全相同。 2、LWIP移植参考网络上移植stm32f107+ lwip1.4.1的代码,与发烧友ucosII+
    发表于 09-29 01:38

    lwipfreertos操作系统移植代码分享!

    本人在stm32f407 探索者板子上实验过,根据原子哥lwip带UCOS2移植的这一节视频,做了lwipFreeRTOS
    发表于 10-18 01:45

    freeRTOS+LWIPSTM32F407上的移植分享!

    的学习资料,那我们只好自己摸索尝试了。本帖子是一个在MDK环境下移植后的freeRTOSLWIP的工程压缩包(在帖子最后),用于和大家共同探讨移植问题,压缩包解压后,在路径
    发表于 10-23 04:36

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

    的固件库不是标准库而是HAL库,因为HAL库是未来的趋势2,我的ucos-iii移植是直接从ucos官网下载的关于STM32F407的发行版本,ucos-iii版本号 V3.04.05,15年9月份的版本STM32F407_uC
    发表于 11-10 23:05

    请问有reeRTOS+STM32F407ZGT和lwip1.4.1+dp83848程序吗?

    本人想做一个小东西。要用到以太网,同时要支持操作系统。在这里求助广大网友。具体如下:FreeRTOS+STM32F407ZGT+lwip1.4.1+dp83848程序,STM32F407与dp83848连接接口为RMII.如果有操作系统UCOSIII的也可以,谢谢。
    发表于 03-27 04:35

    STM32F107+LWIP+FreeRTOS 精选资料分享

    STM32F107+LWIP+FreeRTOS前言最近在学习LWIP的协议栈,打算移植FreeRTOS上网上找了资料,原子的用的是F4的平
    发表于 08-05 06:50

    请问一下在FreeRTOS系统下的LwIP-1.4.1是怎样移植

    请问一下在FreeRTOS系统下的LwIP-1.4.1是怎样移植的?有哪些移植过程?
    发表于 11-03 07:06

    如何实现FreeRTOS系统下LwIP-1.4.1移植

    如何实现FreeRTOS系统下LwIP-1.4.1移植
    发表于 12-23 07:29

    FreeRTOS下对lwIP移植程序

    FreeRTOS下对 lwIP移植程序。
    发表于 10-29 10:58 11次下载

    STM32F107VCT6+DP83848 移植 LWip-1.4.1 笔记

    STM32F107VCT6+DP83848 移植 LWip-1.4.1 笔记
    发表于 11-22 19:10 119次下载

    FreeRTOS-stm32f407移植

    FreeRTOS-stm32f407移植需要准备的内容FreeRTOS移植步骤1、添加FreeRTOS源码1)复制源码内容2)删除porta
    发表于 12-04 13:36 9次下载
    <b class='flag-5'>FreeRTOS-stm32f407</b><b class='flag-5'>移植</b>

    STM32FreeRTOS移植

    FreeRTOS,接下来我们就把FreeRTOS移植到我们所使用的平台上,我们使用的板子是STM32F407。02. 预备工作要移植
    发表于 12-04 14:06 14次下载
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>FreeRTOS</b><b class='flag-5'>移植</b>

    使用STM32CubeMX对F407ZGT6移植LWIP(全网最全)

    本项目采用正点原子的探索者STM32F407开发板利用STM32CubeM移植LWIP使用STM32CubeMX可以非常方便的将
    发表于 12-27 18:37 77次下载
    使用<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>(全网最全)

    CUBE配置STM32H750、Lan8720、FreeRTOSlwip、掉线重连、KeepAlive移植

    STM32H750VBT6+Lan8720A+FreeRTOS+lwip调试记录2020年10月6日目录STM32H750VBT6+Lan8720A+FreeRTOS+lwip调试记录
    发表于 12-27 18:48 91次下载
    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开发手册 V1.1

    STM32F407 FreeRTOS开发手册_V1.1PDF文件下载。
    发表于 07-31 11:16 52次下载