2016-11-28 81 views
0

我正在嘗試將我的項目配置爲LPC1343的FreeRTOS。但我發現了以下錯誤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採取措施。
謝謝

+0

首先要注意的是,如果您使用的是LPC1343,那麼包含iolpc1342.h可能不正確,並與iolpc1343.h中的聲明衝突。你必須弄清楚爲什麼包含iolpc1342.h(可能通過嵌套包含和條件編譯鏈 - 很可能你在某個地方設置了不適當的處理器類型宏定義。很可能沒有什麼特別的與FreeRTOS相關的。 – Clifford

+0

I已經解決了第一個錯誤,我真的很喜歡接下來的兩個錯誤的解決方案 –

+0

然後,你應該或者從你的問題中刪除第一部分,或者如果解決方案可能對社區有用,則發佈自己的問題的答案。 – Clifford

回答

0

顯然configMAX_SYSCALL_INTERRUPT_PRIORITY沒有定義,當第一次遇到queue.c的第952行。

當明確測試值而非存在時,未定義的宏值爲零;因此#error指令輸出。也就是說,如果ABC未定義,則#if defined ABC爲false,但#if ABC==0將爲true。

configMAX_SYSCALL_INTERRUPT_PRIORITY應該在FreeRTOSConfig.h中定義,如here所述,並且可能不爲零。請務必閱讀關於設置此值的所有註釋 - Cortex-M3端口有特殊注意事項。

+0

是的,我讀到它。但我仍然困惑什麼樣的價值應爲每個這些設置, ''configKERNEL_INTERRUPT_PRIORITY' 'configMAX_SYSCALL_INTERRUPT_PRIORITY'對於configMAX_API_CALL_INTERRUPT_PRIORITY' LPC1343 –

+0

設置爲非零值將至少它允許建立 - 根本不定義它不是一種選擇。然而,使用的價值是一個不同的問題。我沒有使用過FreeRTOS,但是如果還沒有一個LPC1xxx端口,你至少可以進行初始工作設置,那麼將會感到驚訝。 – Clifford

0

所需的值取決於單片機系列。這是一個有點棘手,這就是爲什麼在這裏試圖解釋它:http://www.freertos.org/RTOS-Cortex-M3-M4.html你需要知道你的LPC設備上實現了多少中斷優先級(硬件),然後設置常量以匹配。如果你使用的是FreeRTOS的最新版本,並定義了configASSERT(),那麼它應該告訴你,如果你弄錯了。您也可以通過將0xFF寫入中斷優先級寄存器來手動解決問題,然後讀取寄存器值以查看有多少8位「卡住」。如上面的鏈接所述,這些位將是最重要的位,而不是最初預期的最低位。