尝试在STM32F4 Discovery中实现调度程序

时间:2017-10-08 14:04:17

标签: c function-pointers scheduler multitasking stm32f4discovery

我有一个关于调度程序实现的问题。我试图根据我的理解实现调度程序。

在这个例子中,我利用了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,但不知怎的,我无法修正它。我不确定自己做错了什么?我没有按预期在液晶显示屏上看到结果。

0 个答案:

没有答案