未定義のシンボル xTaskGetCurrentTaskHandle (stream_buffer.o から参照) | STM32 移植された FreeRTOS コンパイル済みコード エラー

目次

1. 背景

1.1. 序文

2. 完全なエラー情報

2.1. 完全なエラーレポート

2.2. エラー情報の解析

3. 解決策のアイデア

3.1. アイデア

4. 結果


1. 背景

1.1. 序文

STM32 を FreeRTOS に移植する方法を学習する過程で、ソース コードは正常に移植されましたが、コンパイル中にエラーが発生しました。

システム: win10

ソフトウェア: keil5 mdk

移植: FreeRTOS

問題: 使用前に未定義のエラーが発生する

2. 完全なエラー情報

2.1. 完全なエラーレポート

*** コンパイラ 'V5.06 update 5 (build 528)' を使用し、フォルダ: 'D:\keil\keil4\ARM\ARMCC\Bin' ビルド ターゲット 'FreeROTS移植一' をコンパイル
list.c
...
タイマーをコンパイルしています。 c...
croutine.c をコンパイル...
event_groups.c をコンパイル...
stream_buffer.c をコンパイル...
queue.c を
コンパイル...tasks.c を
コンパイル...heap_4.c
をコンパイル...port.c をコンパイル...
リンク中...
..\OBJ\LED.axf: エラー: L6218E: 未定義のシンボル xTaskGetCurrentTaskHandle (stream_buffer.o から参照)。
画像シンボルをリストするには情報が不十分です。
イメージ マップ内のロード アドレスをリストするには情報が不十分です。
完了: 情報 2 件、警告 0 件、エラー メッセージ 1 件。
"..\OBJ\LED.axf" - エラー 1 件、警告 0 件。
ターゲットは作成されていません。
ビルド経過時間: 00:00:00

2.2. エラー情報の解析

キーエラー:

..\OBJ\LED.axf: エラー: L6218E: 未定義のシンボル xTaskGetCurrentTaskHandle (stream_buffer.o から参照)。

分析: xTaskGetCurrentTaskHandle は使用前に定義されていません。

3. 解決策のアイデア

3.1. アイデア

未定義のエラー (このカテゴリ) の場合、解決策は通常、Ctrl+F で検索し、マクロ定義を見つけて、定義を変更することです。

以下の図 1 に示すように:

図1


ご覧のとおり、ここで定義がない場合、値は 0 に代入されますが、コードをコンパイルするときにそれを使用したため、エラーが発生しました。これを解決するには 0 を 1 に変更する必要があります。

以下の図 2 に示すように:

 図2


変更を保存した後、次の図 3 に示すように再度コンパイルします。

 画像3


4. 結果

上の図 3 からわかるように、このエラーは解決されていますが、使用前にエラーが定義されていない場合は、まず検索でマクロ定義を見つけて変更する必要があります。

おすすめ

転載: blog.csdn.net/qq_57663276/article/details/128761817