Tengo una pregunta con respecto a la implementación del planificador. He intentado implementar un programador de acuerdo con mi entendimiento.
En este ejemplo, he aprovechado el controlador Systick proporcionado por STM32, por lo que mi controlador se ve algo así:
void SysTick_Handler(void)
{
HAL_IncTick();
HAL_SYSTICK_IRQHandler();
if(ticks_for_scheduler++==100)
ticks_for_scheduler=0;
}
Tengo un archivo scheduler.h que tiene este aspecto:
void (*task1)() = read_temp;
void (*task2)() = Display_temp_lcd;
y mi scheduler.c se ve así:
extern uint16_t ticks_for_scheduler;
void sched_system()
{
if(ticks_for_scheduler==20)
(*task1)();
if(ticks_for_scheduler==40)
{
(*task2)();
}
}
La función sched_system
se llama en main(){while(1){sched_system();}
Mi objetivo es ejecutar task1
cada 20 ms y task2
cada 40 ms, pero de alguna manera no puedo hacerlo bien. No estoy seguro de lo que estoy haciendo mal? No veo los resultados en mi LCD como se esperaba.