문제

Freertos의 버전 5.4와 함께 MSP430F5438을 사용하고 있습니다.

나는 알아낼 수없는 재미있는 문제가 있습니다.

기본적으로 configtick_rate_hz를 다른 값으로 설정하면 LED가 더 빠르거나 느리게 깜박입니다. 같은 비율을 유지해야합니다. configtick_rate_hz를 설정하면 깜박이면 깜박이고 Tick_rate를 낮추면 더 빠릅니다.

vtaskdelayuntil (& xlastflashtime, xflashrate); configtick_rate_hz의 내용에 관계없이 LED가 1 초만 깜박임 만해야합니다. 나는 Xflashrate를 통과하여 확인하기 위해 확인했습니다. 항상 = configtick_rate_hz에. 암호:

xFlashRate = ledFLASH_RATE_BASE;//my flash base rate is 1000ms
xFlashRate /= portTICK_RATE_MS; //so xFlashrate = whatever configTICK_RATE_HZ equals

/* We need to initialise xLastFlashTime prior to the first call to vTaskDelayUntil().*/ 
xLastFlashTime = xTaskGetTickCount();
for(;;) { 
vTaskDelayUntil( &xLastFlashTime, xFlashRate ); vParTestToggleLED( uxLED ); 
flashled();//this should happen every 1 second.
}

LED는 configtick_rate_hz를 1000으로 설정했을 때 1 초 이상으로 깜박이고 LED는 진드기 속도를 ~ 200 미만으로 설정할 때 1 초 미만의 기간으로 깜박입니다.

configtick_rate_hz는 LED 깜박임에 영향을 미치지 않아야합니다.

더 많은 정보가 필요하다는 것을 알고 있으며 도움이 필요한 코드 스 니펫을 쉽게 제공 할 것입니다.

도움이 되었습니까?

해결책

RTOS 진드기는 타이머 인터럽트에 의해 생성됩니다. 타이머는 configtick_rate_hz를 설정 한 내용에 관계없이 항상 400kHz에서 고정 된 진드기를 일으키도록 설정되었습니다. 깜박임 속도는 RTOS 진드기 속도가 configtick_rate_hz (porttick_rate_ms = 1000/configtick_rate_hz)로 올바르게 표시된다는 가정하에 설정되므로 문제가 발생했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top