割り込みサービスサブルーチン(ISR)
761 ワード
割り込みは組み込みシステムの重要な構成部分であり、多くのコンパイル開発者が拡張を提供し、標準Cに割り込みをサポートさせる.これは、新しいキーワードが生成されたことを意味します.interrupt(51)です.次のコードは__interruptキーワードを使用して割り込みサービスサブルーチン(ISR)を定義します.このコードについてコメントしてください.
この関数には多くのエラーがあり、何から言ったのか分かりません(オペレーティングシステム以外の割り込みサービス関数を前提としています):
1)ISRは値を返すことはできません(すべてvoidタイプであるべきです).これが分からない場合は、雇用されません.
2)ISRはパラメータを伝達できない.もしあなたがそれを見ていなければ、あなたが雇われた機会は最初のものと同じです.
3)多くのプロセッサ/コンパイラでは、浮動小数点は一般的に再入力できません.一部のプロセッサ/コンパイラでは、追加のレジスタをスタックに入れる必要があります.一部のプロセッサ/コンパイラでは、ISRで浮動小数点演算を許可しません.また、ISRは短くて効率的であるべきであり、ISRで浮動小数点演算を行うのは賢明ではない.また、割り込みサービスプログラムはカーネル状態で実行され、カーネルは通常浮動小数点演算をサポートしない.
__interrupt double compute_area (double radius)
{
double area = PI * radius * radius;
printf("/nArea = %f", area);
return area;
}
この関数には多くのエラーがあり、何から言ったのか分かりません(オペレーティングシステム以外の割り込みサービス関数を前提としています):
1)ISRは値を返すことはできません(すべてvoidタイプであるべきです).これが分からない場合は、雇用されません.
2)ISRはパラメータを伝達できない.もしあなたがそれを見ていなければ、あなたが雇われた機会は最初のものと同じです.
3)多くのプロセッサ/コンパイラでは、浮動小数点は一般的に再入力できません.一部のプロセッサ/コンパイラでは、追加のレジスタをスタックに入れる必要があります.一部のプロセッサ/コンパイラでは、ISRで浮動小数点演算を許可しません.また、ISRは短くて効率的であるべきであり、ISRで浮動小数点演算を行うのは賢明ではない.また、割り込みサービスプログラムはカーネル状態で実行され、カーネルは通常浮動小数点演算をサポートしない.