いくつかのタイマー/タイムアウトを実装するために、Runnableのサイクル時間を使用する非常に多くのコードを見てきました。問題は、誰かがこのRunnableのサイクルタイムを変更することを決定した場合、タイマーが間違っていることです。 例:AUTOSAR Runnableの(実際の)サイクル時間の決定方法
だから、#define FOO_TIMER_100MS_REACHED (10U)
FUNC(void, FOO_CODE) FOO_Cycle_10ms(void)
{
static uint8 t = 0;
if(t < FOO_TIMER_100MS_REACHED)
{
t++;
}
else
{
; /* 100ms elapsed - do whatever is necessary */
}
}
、どのように私はこのRunnableを内側から定期的にトリガ機能FOO_Cycle_10msのサイクル時間を決定することができますか?私のようなものを探しています上記の例に関しては :
#define FOO_TIMER_100MS_REACHED ((uint8)(100U/CYCLE_TIME_FOO_Cycle_10ms))
は、ここではいくつかのユースケースです。 実装者は、しばしば設定ツールにアクセスすることさえできません。 (当然、彼/彼女はARXMLを見ることができます) 2.プロジェクト中にサイクル時間が変わることがあります 最適化の努力のために。次に、コードを調整する必要があります。 ベストケースでは、定義(ここではFOO_TIMER_100MS_REACHED)のみが影響を受けますが、より完全なコードを分析する必要があります。 3.他のプロジェクトで再利用する必要のあるSW-C用のコードを作成しています。 –