使用FREERTOS,程序卡死在port.c 的 configASSERT行的解决办法

做一个项目 STM32 + LWIP + DHCP ,结果一直获取不到动态的IP地址,仿真得知卡死在
configASSERT( ucCurrentPriority >= ucMaxSysCallPriority );
这一行。

可能是某个外设的中断等级太高了,降低后就可以解决了。

卡死原因如下:使用FreeRTOS API的中断不能保留其默认优先级为0

如果一个服务例程(ISR)为一个优先级高于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断调用一个ISR安全的FreeRTOS API函数,下面的断言将失败。ISR安全的FreeRTOS API函数必须从分配了优先级在configMAX_SYSCALL_INTERRUPT_PRIORITY或以下的中断中调用。
数字上的低中断优先级数字代表逻辑上的高中断优先级,因此中断的优先级必须设置为等于或数字上高于的值
configMAX_SYSCALL_INTERRUPT_PRIORITY。

使用FreeRTOS API的中断不能保留其默认优先级为0,因为这是可能的最高优先级,它保证高于configMAX_SYSCALL_INTERRUPT_PRIORITY,因此也保证无效。FreeRTOS维护独立的线程和ISR API函数,以确保中断入口尽可能快速和简单。
以下链接提供详细信息:http://www.freertos.org/RTOS-Cortex-M3-M4.html http://www.freertos.org/FAQHelp.html */

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值