1

起動時に一度関数を実行するための静的な"init" 変数(RTOS)がありますが、ランダムな値に初期化されているようです。静的タグを削除すると、すべてがうまく機能します。(パスごとに init 関数を実行するという明らかな問題を除いて。)これが機能しない理由、またはこれを達成するためのより良い方法について、誰かがより多くの洞察を与えることができますか?

コード例:

void ManageStructures()
{
    // Variable declarations/definitions
    static uint8_t StructInitialized;
    // Have also tried "static uint8_t StructInitialized = 0", neither worked

    // Function prototypes
    void InitStruct();

    if (!StructInitialized)
    {
        StructInitialized= 1;
        InitStruct();
    }
    Test = StructInitialized;

編集:情報不足で申し訳ありません。これは会社のためのものであり、私は私たちの公開情報ポリシーの範囲内にとどまろうとしています. MCU は、「Ac6 STM32 MCU GCC」ツールチェーンを使用する STM32F7 シリーズです。私はコンパイラ操作に精通していないので、コンパイラまたはメイクファイル関連の質問に対する回答を見つけるのに時間がかかる場合があります。

編集: これは私のコードではなく、コンパイラまたはリンカー スクリプトの問題であることが明らかになりました。そうは言っても、この問題の根源にたどり着く前に、ツールチェーン、リンカー スクリプト、およびコンパイラ全般についてもっと学ぶ必要があることも非常に明確になりました。貴重なフィードバックを提供したり、自分で答えたりするのに十分慣れたら、この質問に戻ります。皆さん、フィードバックと指示をありがとうございました!

4

1 に答える 1