일부 타이머/타임 아웃을 구현하기 위해 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))
여기에 몇 가지 유스 케이스가 있습니다. 1. SWCD를 만드는 사람과 코드를 구현하는 사람이 같지 않을 수 있습니다. 구현자는 매우 자주 구성 도구에 액세스하지도 않습니다. (물론 ARXML을 볼 수 있습니다.) 2. 프로젝트 수행 중주기 시간이 변경 될 수 있습니다. 예 : 최적화 노력 때문입니다. 그런 다음 코드를 조정해야합니다. 최상의 경우, 정의 (여기서는 FOO_TIMER_100MS_REACHED) 만 영향을 받지만 전체 코드를 분석해야 할 가능성이 큽니다. 3. 다른 프로젝트에서 다시 사용해야하는 SW-C 코드를 작성 중입니다. –