あなたのアプリケーションについてはよくわかりませんが、これは同じ問題に遭遇するいくつかの機能の最初の 1 つに過ぎないかもしれません。多くの解決策がありますが、最初に使用するのに適しているのはsuperloopです。Michael Pont はEmbedded Cという組み込み C プログラミングの入門書を著しています。彼の大学のウェブサイトから入手できる主題に関する彼の講義からのメモがいくつかあり
ます。
要約すると、プログラムの流れは次のようになります。
initialization_stuff();
other_inititialization_stuff();
while(1)
{
do_something();
do_something_else();
do_something_also();
} // do it again!
関数は、do_something()
アプリケーションが実際に実行することを意図したものです。何らかのセンサーを読み取り、それについて決定を下し、決定の結果を実行する場合があります。ほとんどすべての組み込みアプリケーションで、もう一度やり直したいと思うでしょう。プログラムは、誰かがプラグを抜くまで続きます。ループ内でそのボタン行 (if
上で書いたステートメントですが、 はありません) をチェックします。else
while(1)
実行したいこの特定のアクションであるソフトウェア リセットは、お使いのデバイスでは簡単ではありません。リセットを誘発するために突くことができるレジスタはありません。グランドに閉じたボタンを RST に接続するだけでよいでしょう。そうすれば、プログラミングについて心配する必要さえありません。ただし、ソフトウェアで行う必要がある場合は、ARMのこのドキュメントを参照してください。main()
もう一度呼び出すことはできません。
void reset (void)
{
((void (code *) (void)) 0x0000) ();
}
周辺機器はリセットされませんが、少なくともコードは再初期化されます。