我正在尝试将我的项目配置到用于LPC1343的FreeRTOS。但是我得到了以下错误
Error[Pe020]: identifier "configMAX_SYSCALL_INTERRUPT_PRIORITY" is undefined C:\Users\IAR Embedded Workbench\FreeRTOS\Source\queue.c 952
Fatal Error[Pe035]: #error directive: configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0. See C:\Users\IAR Embedded Workbench\FreeRTOS\Source\portable\IAR\ARM_CM3\port.c 82你能帮我解决这些错误吗?我还想知道当我将FreeRTOS配置到我的LPC1343时,我必须采取哪些步骤。
谢谢
发布于 2016-11-28 19:02:17
显然,当第一次遇到队列c的952行时,没有定义configMAX_SYSCALL_INTERRUPT_PRIORITY。
当显式测试值而不是是否存在时,未定义的宏的值为零;因此#error指令输出。也就是说,如果ABC未定义,则#if defined ABC为false,但#if ABC==0将为true。
configMAX_SYSCALL_INTERRUPT_PRIORITY应该按照here的描述在FreeRTOSConfig.h中定义,并且不能为零。请务必阅读有关设置此值的所有说明- Cortex-M3端口有特殊注意事项。
发布于 2016-11-30 03:43:43
所需的值取决于微控制器系列。这有点棘手,这就是为什么要在这里解释它的原因:http://www.freertos.org/RTOS-Cortex-M3-M4.html你需要知道在你的LPC设备上实现了多少中断优先级位(在硬件中),然后设置常量来匹配它。如果您使用的是最先进的FreeRTOS版本,并且定义了configASSERT(),那么如果您弄错了,它会告诉您。也可以通过将0xFF写入中断优先级寄存器,然后读回寄存器值来手动计算出8位中有多少位“卡住”。如上所述,这些比特将是最高有效比特,而不是最初可能期望的最低有效比特。
https://stackoverflow.com/questions/40838736
复制相似问题