2016-11-28 13 views
0

私は自分のプロジェクトをFreeRTOS for LPC1343に設定しようとしています。しかし、私は次のエラーにFreeRTOS in LPC1343

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 

を取得していますが、これらのエラーで私を助けてくださいことができ、また、私は私が私のLPC1343にFreeRTOSをconfigコンてるとき取らなければならない手順はどのようなものしたいと思います。
ありがとう

+0

最初に留意すべきは、LPC1343を使用している場合、iolpc1342.hを含めると間違っていて、iolpc1343.hの宣言と衝突することです。おそらくあなたは不適切なプロセッサタイプのマクロ定義をどこかに設定している可能性があります。おそらくFreeRTOSとは特に関係がありません。 – Clifford

+0

私はiolpc1342.hが含まれている理由を理解しなければなりません。次の2つのエラーの解決が本当に好きです –

+0

解決策がコミュニティに役立つ可能性がある場合は、最初の部分を質問から削除するか、自分の質問への回答を投稿する必要があります。 – Clifford

答えて

0

明らかにconfigMAX_SYSCALL_INTERRUPT_PRIORITYはqueue.cの最初の行952に遭遇したときに定義されていません。

未定義マクロは、明示的に値ではなく値をテストしたときに値ゼロを持ちます。したがって、#errorディレクティブ出力。つまり、ABCが定義されていない場合、#if defined ABCはfalseですが、#if ABC==0がtrueになります。

は、hereのようにFreeRTOSConfig.hで定義され、ゼロでないことがあります。この値を設定する際の注意事項をすべて読んでください.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ビットの「スタック」の数を確認することで、手動で処理することもできます。上のリンクで説明したように、ビットは最上位ビットであり、最下位ビットは最初に予想されるビットではありません。

関連する問題