いくつかのタイマー/タイムアウトを実装するために Runnable のサイクル時間を使用する非常に多くのコードを見てきました。問題は、誰かがこの 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))