我有一个关于调度程序实现的问题。我试图根据我的理解实现调度程序。
在这个例子中,我利用了STM32提供的Systick处理程序,所以我的处理程序看起来有点像这样:
void SysTick_Handler(void)
{
HAL_IncTick();
HAL_SYSTICK_IRQHandler();
if(ticks_for_scheduler++==100)
ticks_for_scheduler=0;
}
我有一个scheduler.h文件,如下所示:
void (*task1)() = read_temp;
void (*task2)() = Display_temp_lcd;
和我的scheduler.c看起来像这样:
extern uint16_t ticks_for_scheduler;
void sched_system()
{
if(ticks_for_scheduler==20)
(*task1)();
if(ticks_for_scheduler==40)
{
(*task2)();
}
}
在sched_system
中调用函数main(){while(1){sched_system();}
我的目标是每20毫秒执行一次task1
,每40毫秒执行一次task2
,但不知怎的,我无法修正它。我不确定自己做错了什么?我没有按预期在液晶显示屏上看到结果。