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

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();
      }
  }
相关推荐
QK_002 小时前
阿波罗学习--day1
stm32·单片机
czhaii2 小时前
单片机光学自动打靶机寻点流程分析
单片机·嵌入式硬件·硬件工程
是摆烂第一名呀2 小时前
【rk3506】U-Boot串口时钟未配置,导致串口彻底失效
linux·arm开发·驱动开发·嵌入式硬件
我叫洋洋3 小时前
VMware Workstation 16 桥接网络修复记录
linux·嵌入式硬件
LS_learner4 小时前
数学建模嵌入式中的串行流水线 + 消息并发
嵌入式硬件
【云轩】4 小时前
离散量输入输出电路设计:V/地、V/开、地/开信号与单片机接口的电路实现
单片机·嵌入式硬件·mongodb
2401_854151554 小时前
STM32 低功耗模式:SLEEP / STOP / STANDBY 怎么选
stm32·单片机·嵌入式硬件
非鱼䲆鱻䲜4 小时前
CCS 20.5.0的printf重定向串口怎么实现?
linux·单片机·电赛·ccs
Kuakewei8885 小时前
7533稳压芯片ic输入串电阻原理:3.3V输出功耗计算与散热指南
嵌入式硬件
謓泽6 小时前
【6.26】芯片测试入门 从零搭自动化测试框架|PyVISA+OOP 保姆级教程
stm32·单片机·fpga开发·雷达·tr