ファームウェアエンジニアとしてフルタイムの仕事をしています。最近、GPIO構成を確認し、必要に応じて設定を変更するタスクを与えられました。間違って設定されたピンがいくつか見つかったので、当然のことながらそれらを再設定しましたが、間違った順序で行ったと言われました。私が話していることは次のとおりです。
変更前:
GPIO1.direction = INPUT;後:
GPIO1.direction = OUTPUT;
GPIO1.value = 0;
ただし、コードのレビュー中に、初期化の順序を次のように変更する必要があると言われました。
GPIO1.value = 0;
GPIO1.direction = OUTPUT;
つまり、最初に値を設定してから、ピンの方向を設定します。入力用と出力用に2つのレジスタを使用するため、これが最新のプロセッサ上で必要であると言われましたが、古いプロセッサは1つのレジスタしか使用しないため、操作の順序は重要ではありません。
(注:Modern = ARM Cortex M3以降、Old = Intel 8051)
私は職場でより良い説明を求めましたが、良い答えを得ることができませんでした。それが私がここで尋ねることにした理由です。
だからここに私の質問があります:
- 新しいプロセッサで初期化の順序が重要なのはなぜですか?
- 古いプロセッサで初期化の順序が重要でないのはなぜですか?
- 最新のプロセッサでは、2つのレジスタについて何を語っていますか?
- 古いプロセッサでどのレジスタについて話しているのですか?
誰かが図のようなものを提供できるなら、それはさらに良いでしょう。