做一个项目 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 */