私は C でマイクロコントローラーのコードを持っています。私が持っている例に基づいて、関数 " void osSleep(tU32 ticks)
" を使用してプログラムをしばらく停止します。残念ながら、それが実際にどのように機能し、マイクロコントローラーに対して何をするのか (どのピン、状態などがどの値に設定されているか) はわかりません。
ソースがあるので、 setBuzzer() 関数を理解しました:
void setBuzzer(tBool on)
{
if (TRUE == on)
IOCLR = BUZZER_PIN;
else
IOSET = BUZZER_PIN;
}
そのため、GPIO ポートは、ブザーに関連する PIN (BUZZER_PIN = 0x00002000) に対して 1 または 0 に設定されます。ブザーには 1 つのピンがあるので、それを有効または無効にすることができます (高電圧と低電圧)。
私は osSleep() に対して同様の分析を行いたいのですが、奇妙なことに、コード全体でその実装を見つけることができず、宣言のみです:
void osSleep(tU32 ticks);
たぶん、その関数はいくつかのライブラリにあります。とにかく、それが実際に下位レベルでどのように機能するかを知りたいです (たとえば、タイマーを呼び出したときに何が起こるか、ブザーの例のように、どの命令が実行されるか)。
また、 Embedded Artistsによる「Pre-emptive Operating System v 1.4.0」と呼ばれるコードのドキュメントには、高レベルの短い定義しかありません。