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

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();
      }
  }
相关推荐
sword devil90021 分钟前
STM32F407VET6实战:CRC校验
stm32·单片机·嵌入式硬件
小智学长 | 嵌入式1 小时前
单片机-STM32部分:18、WiFi模组
stm32·单片机·嵌入式硬件
KaiGer6663 小时前
AUTOSAR图解==>AUTOSAR_SWS_ICUDriver
单片机·汽车·嵌入式·autosar
SANGEDZ_YYDS4 小时前
三格电子上新了——IO-Link系列集线器
单片机
亿道电子Emdoor4 小时前
【ARM】MDK如何将变量存储到指定内存地址
arm开发·stm32·单片机
搬砖的小码农_Sky4 小时前
FPGA:Lattice的FPGA产品线以及器件选型建议
嵌入式硬件·fpga开发·硬件架构·硬件工程
mftang5 小时前
Zephyr OS Nordic芯片的Flash 操作
单片机·嵌入式硬件·物联网
阿川!6 小时前
嵌入式软件--stm32 DAY 6 USART串口通讯(下)
stm32·单片机·嵌入式硬件
WKJay_15 小时前
深入理解 Cortex-M3 特殊寄存器
stm32·单片机·嵌入式硬件
Linux嵌入式木子18 小时前
# 2-STM32F103-复位和时钟控制RCC
stm32·单片机·嵌入式硬件