cubemx移植事件标志组These IPs still have some not configured or wrong parameter values:[FREERTOS]

本文档描述了在基于FreeRTOS的操作系统中遇到的几个问题及解决方案:1) 使用xEventGroupSetBitFromISR函数报错;2) 程序因未配置事件标志组参数而无法运行;3) 中断服务程序无法退出;4) 堆内存溢出问题。解决方法包括正确配置中断优先级,启用必要的宏定义,并调整堆内存大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、代码按照正点原子的例程配置的。
遇到了几个问题:
1.使用这个函数xEventGroupSetBitFromISR会报错。
2.程序不运行,These IPs still have some not configured or wrong parameter values:[FREERTOS]。
3.已进入中断就卡在里面再也出不来。
二、我用的cubemx版本只能用V1,不能选V2,应该是版本的问题不能在里面配置事件标志组。不过问题不大在代码里写就好了。
配置3个任务,一个按键选外部中断,优先级记得选,默认是0,中断优先级数字越小优先级越高,一开始我没选优先级数然后一进入到xEventGroupSetBitsFromISR就卡住在这里面。
三、freeRTOS官方的代码里说了,使用xEventGroupSetBitsFromISR要先使能configUSE_TRACE_FACILITY、INCLUDE_xTimerPendFunctionCall、configUSE_TIMERS这三个宏定义,这三个宏定义在cubemx里的定义在下图。要先使能USE_TIMERS然后才能使能xTimerPendFunctionCall,然后才能使能xEventGroupSetBitFromISR。要不然xEventGroupSetBitFromISR会一直是disable。我一开始没有使能这三个宏定义所以使用xEventGroupSetBitFromISR这个函数会报错。
在这里插入图片描述
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/46c3ff6bce7741f298d1f4c170db00fa.png
然后建了三个任务加上软件定时器之后堆会溢出,生成代码的时候会这样↓
在这里插入图片描述
这样生成的代码不会报错不会警告,但是整个程序运行不了,把这个改得比TOTAL HEAP USED的3884大就好,改成4000。就没事了。
在这里插入图片描述

<think>我们正在处理关于LWIP外设配置错误和平台设置的问题。用户提到了“LWIPperipheralconfigurationerrorfixplatformsettingstab”,这表明他们可能在配置LWIP时遇到了外设相关的错误,并且可能在某个平台的设置选项卡(例如STM32CubeMX中的配置选项卡)中遇到了问题。由于问题比较具体,我们需要考虑以下几个方面:1.LWIP(LightweightIP)是一个用于嵌入式系统的TCP/IP协议栈,通常与微控制器(如STM32)一起使用。2.外设配置错误可能涉及到与网络相关的硬件外设(如以太网MAC、PHY)的配置,或者与LWIP相关的参数设置。3.平台设置选项卡通常是指在配置工具(如STM32CubeMX)中的图形界面设置。常见的配置错误可能包括:-引脚配置错误(例如,RMII或MII接口的引脚分配不正确)-时钟配置错误(特别是以太网外设的时钟频率)-内存配置错误(LWIP需要一定数量的内存池,如果分配不足会导致错误)-PHY(物理层)配置错误(如PHY地址设置不正确)由于用户没有提供具体的错误信息,我们将提供一些常见的修复步骤。###步骤1:检查引脚配置在平台设置选项卡(如STM32CubeMX的“Pinout”选项卡)中,确保以太网相关引脚已正确分配。对于RMII接口,需要检查以下引脚:-REF_CLK-MDIO-MDC-RMII_TX_EN-RMII_TXD0,RMII_TXD1-RMII_RXD0,RMII_RXD1-RMII_CRS_DV确保这些引脚没有冲突,并且与硬件设计一致。###步骤2:检查时钟配置在“ClockConfiguration”选项卡中,确保以太网外设的时钟正确。对于RMII接口,需要提供50MHz的时钟(通常来自外部晶振或内部PLL)。检查:-HSE时钟是否启用(如果使用外部晶振)-PLL配置是否正确生成50MHz的以太网时钟(通常为ETH_TX_CLK或ETH_RX_CLK)###步骤3:检查LWIP参数设置在平台设置中,通常有一个“LWIP”或类似的选项卡。检查以下参数:-`MEM_SIZE`:分配给LWIP的内存池大小。如果应用需要处理大量连接或数据包,可能需要增加此值。-`PBUF_POOL_SIZE`:pbuf缓冲池的大小。如果此值太小,可能导致内存不足。-其他参数如`TCP_WND`,`TCP_MSS`等,根据应用需求调整。###步骤4:检查PHY配置在LWIP初始化代码中,通常需要配置PHY的地址。常见的PHY地址有0(或1,具体看硬件设计)。检查代码中是否有类似如下行:```c#definePHY_ADDRESS0x01```确保这个地址与硬件上的PHY地址一致。如果不确定,可以尝试0和1。###步骤5:调试输出启用LWIP的调试输出,以便获取更详细的错误信息。在`lwipopts.h`文件中,可以设置调试宏,例如:```c#defineLWIP_DEBUG1#defineETHARP_DEBUGLWIP_DBG_ON#defineNETIF_DEBUGLWIP_DBG_ON#definePBUF_DEBUGLWIP_DBG_ON//...其他需要调试的模块```然后,通过串口查看调试信息,定位错误原因。###步骤6:检查中断配置确保以太网外设的中断已启用,并且中断处理函数已正确注册。在STM32中,通常需要使能ETH全局中断,并实现`ETH_IRQHandler`。###总结以上步骤涵盖了常见的LWIP外设配置错误。如果问题仍然存在,请提供具体的错误信息或日志,以便进一步分析。§§相关问题§§1.如何确定PHY的地址?2.LWIP内存配置参数有哪些?如何优化?3.在STM32CubeMX中如何配置以太网引脚?4.如何调试LWIP中的网络连接问题?5.在RTOS环境下使用LWIP需要注意什么?</think>### LWIP外设配置错误修复指南 针对LWIP外设配置错误(特别是平台设置选项卡中的问题),以下是关键修复步骤: #### 1. **检查物理层(PHY)配置** - **PHY地址设置**:在平台设置选项卡中确认PHY地址(通常0x01或0x00),需与实际硬件匹配。地址错误会导致初始化失败 - **接口类型选择**:正确选择RMII/MII接口模式(查看硬件原理图确认) - **自动协商配置**:启用`PHY_AUTONEGOTIATION`选项(推荐)或手动设置速率/双工模式 #### 2. **验证时钟配置** - **RMII参考时钟**:确保提供50MHz时钟(通过HSE或PLL配置) - **时钟源选择**:在CubeMX的"Clock Configuration"选项卡检查: ```c RCC_PeriphCLKInitTypeDef periph_clk; periph_clk.EthClockSelection = RCC_ETHCLKSOURCE_PLL; // 或HSE ``` - **时钟树校验**:使用STM32CubeMX的时钟树工具验证ETH时钟频率 #### 3. **内存池配置优化** - **内存池大小**:在`lwipopts.h`中调整: ```c #define MEM_SIZE (16*1024) // 根据应用需求增加 #define PBUF_POOL_SIZE 32 // 最小推荐值 ``` - **内存对齐**:确保`MEM_ALIGNMENT=4`(32位系统) #### 4. **关键外设寄存器检查** - **DMA配置**:启用ETH DMA并设置描述符数量 ```c heth.Init.RxDesc = 8; // 接收描述符 heth.Init.TxDesc = 8; // 发送描述符 ``` - **中断优先级**:配置ETH中断优先级(避免与其他高优先级中断冲突) #### 5. **引脚映射验证** -CubeMX的"Pinout & Configuration"选项卡中: - 确认所有ETH引脚(REF_CLK, TX_EN, RXD0等)无冲突 - 检查引脚速度设置(推荐High Speed) #### 6. **LWIP协议栈参数** - **连接数配置**: ```c #define MEMP_NUM_TCP_PCB 5 // TCP连接数 #define MEMP_NUM_UDP_PCB 3 // UDP连接数 ``` - **超时设置**: ```c #define TCP_MSL (60*1000) // 最大报文寿命(ms) ``` #### 7. **调试技巧** - 启用LWIP调试输出: ```c #define LWIP_DEBUG 1 #define NETIF_DEBUG LWIP_DBG_ON ``` - 使用`netif_set_link_callback()`检测物理链路状态变化 - 通过`ip4addr_ntoa(netif_ip4_addr(netif))`打印实际分配的IP地址 > **典型错误示例**: > 若出现`PHY Status 0x7869`错误,通常表示: > - 时钟配置错误(检查RMII_REF_CLK) > - PHY地址不匹配 > - 硬件复位信号未正确释放
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值