【单片机】单片机裸机实现多任务调度

RTOS vs 裸机多任务调度

实时操作系统RTOS的优点不必多说了,但是对于一些简单的业务需求,移植一个操作系统显得非常麻烦,并且占用系统资源,此时就可以考虑利用SysTick裸机实现多任务调度。

单片机裸机实现多任务调度的优点有

1、代码量小

2、移植简单

3、程序架构清晰、模块化

示例代码

方法不止一种,原理都是借助定时器实现多个任务之间的轮转,示例代码如下:

#define TASK01_DELAY 70
#define TASK02_DELAY 1
#define TASK03_DELAY 200

int main()
{
  /*系统时钟配置*/
  system_clock_config();
  /*嘀嗒时钟*/
  systick_init();
    
  u32 current_time = get_system_ms();
  u32 last_task01_time = get_system_ms();
  u32 last_task02_time = get_system_ms();
  u32 last_task03_time = get_system_ms();
  
  while (1)
  {
      current_time = get_system_ms();

      if (current_time - last_task01_time >= TASK01_DELAY)
      {
          // TODO Task01
          last_task01_time = current_time;
          Task01();
      }

      if (current_time - last_task02_time >= TASK02_DELAY)
      {
          // TODO Task02
          last_task02_time = current_time;
          Task02();
      }

      if (current_time - last_task03_time >= TASK03_DELAY)
      {
          // TODO Task03
          last_task03_time = current_time;
          Task03();
      }
  }
相关推荐
Shaun_青璇1 小时前
STM32的AFIO讲解
stm32·单片机·嵌入式硬件·mcu·物联网
Qingniu012 小时前
D2761 适合在个人电脑、便携式音响等系统中作音频限幅用。
科技·嵌入式硬件·音视频·摇头机·风扇·水泵·音频限幅
LightningJie2 小时前
STM32中I2C总线中,允许从机控制SCL总线吗?
stm32·单片机·嵌入式硬件
夜间看花2 小时前
28 基于51单片机的两路电压检测(ADC0808)
嵌入式硬件·51单片机·proteus
浅陌pa2 小时前
18:(标准库)DMA二:DMA+串口收发数据
c语言·stm32·单片机·嵌入式硬件
嗯? 嗯。3 小时前
电烙铁焊接STM32芯片、贴片元器件、手册指南!!!
stm32·单片机·嵌入式硬件
打你个大西瓜️3 小时前
单片机知识总结(完整)
数据库·单片机·mongodb
楚灵魈4 小时前
[STM32]从零开始的STM32 FreeRTOS移植教程
stm32·单片机·嵌入式硬件
Shaun_青璇4 小时前
EXTI配置流程 含中断延时消抖点亮小灯
stm32·单片机·嵌入式硬件·mcu·物联网
夜间去看海5 小时前
01 [51单片机 PROTEUS仿真设计]基于温度传感器的恒温控制系统
嵌入式硬件·51单片机·proteus