Bu zamana kadar hep bare metal çalıştım. RTOS konseptlerini öğrenmek için de yeni yeni uygulama yapmaya başlamak istiyorum. Elimde Nuvoton'un bir developer kiti var. M032SG8AE mikroişlemci var üzerinde. FreeRTOS'un source kodlarını indirdim ve projeme import ettim. LED_Task diye bir task oluşturdum. Bu task içerisinde bir ledi toggle ediyorum.
LED_Task:
Main içerisinde de şu şekilde task oluşturdum:
Kodu çalıştırdığımda led yanıyor ama geri sönmüyor. Toggle olmuyor sadece 1 defa yanıyor o kadar. Debug girdiğimde kodun fotoğraftaki yerde kaldığını gördüm.
İnternette araştırma yaptım. Forumlarda xTaskDelay() fonksiyonu ile ilgili yorumlar yapıyorlardı. Bende xTaskDelay() fonksiyonunu yorum yapıp kendim bir delay fonksiyonu yazdım. Bunun sonucunda led toggle oldu. xTaskDelay() varken çalışmıyor. Yukarıdaki ekran görüntüsündeki yerde kalıyor kod. Fakat benim yazdığım delay kodu ile çalışıyor led toggle işlemi. Buradaki problem nedir?
LED_Task:
C:
void LED_Task( void *pvParameters )
{
while(1)
{
PB14 ^= 1;
vTaskDelay(500/portTICK_RATE_MS);
// delay(500000);
}
}
Main içerisinde de şu şekilde task oluşturdum:
C:
int main()
{
SYS_Init();
SysTick_Config(SystemCoreClock / 1000);
UART0_Initial();
GPIO_Initial();
Timer0_Initial();
xTaskCreate(LED_Task,"LED_Task",configMINIMAL_STACK_SIZE,NULL,1,NULL);
vTaskStartScheduler();
while(1);
}
Kodu çalıştırdığımda led yanıyor ama geri sönmüyor. Toggle olmuyor sadece 1 defa yanıyor o kadar. Debug girdiğimde kodun fotoğraftaki yerde kaldığını gördüm.
İnternette araştırma yaptım. Forumlarda xTaskDelay() fonksiyonu ile ilgili yorumlar yapıyorlardı. Bende xTaskDelay() fonksiyonunu yorum yapıp kendim bir delay fonksiyonu yazdım. Bunun sonucunda led toggle oldu. xTaskDelay() varken çalışmıyor. Yukarıdaki ekran görüntüsündeki yerde kalıyor kod. Fakat benim yazdığım delay kodu ile çalışıyor led toggle işlemi. Buradaki problem nedir?