Silicon Laboratories C8051F020 ツールスティック ドーター カード パッケージで割り込みを使用する方法を学習しています。指定した時間だけ割り込みを実行したいと思います。誰かが私に例を挙げたり、正しい方向に向けたりできますか? または、関数を x 秒間実行する方法がある場合は?
質問する
121 次
1 に答える
0
指定した時間だけ「for」ループを実行できます。CPU の速度がわかっているので、1 つの命令を実行するのに必要な時間を計算できます。そして、forループで実行する必要があるループの数を知ることができます。コンパイラがループを最適化しないことを確認してください....それを削除してください!でも、なぜそんなことをしたいのか理解できません。通常、割り込みは最小限の時間実行する必要があります。ISR でサイクルを失う必要があるとは思いませんでした。(いくつかの外部同期のためのいくつかのサイクルの小さな「待機」を除く)。長時間待機する必要がある場合は、時間が経過したときにオーバーフロー時に独自の ISR を呼び出すタイマーを使用します。
または、xxx 秒ごとに実行される割り込みを実行したい場合は、積極的に待機するのではなく、代わりにタイマーを使用してください。xxx 秒ごとにオーバーフローするタイマーを構成し、コードをその ISR に配置します。タイマーと IRQ が有効になると、ISR は xxx 秒ごとに実行されます
于 2012-10-16T05:33:12.827 に答える