littlebot
Published on 2025-04-09 / 0 Visits
0

【源码】基于C语言的嵌入式系统合作调度器

项目简介

本项目致力于开发适用于嵌入式系统的合作调度器。该调度器支持8个优先级水平,且低优先级值代表高优先级。采用链表实现,入队复杂度为O(N),出队复杂度为O(1),N为已调度任务数量。

项目的主要特性和功能

调度器实现

  • 就绪队列(Ready Queue):由节点链表构成,每个节点含就绪任务指针与优先级,可通过QueTask()Dispatch()进行入队和出队操作。
  • 延迟队列(Delayed Queue):同样是节点链表,节点包含延迟任务指针、原始优先级及关联延迟。用ReRunMe()入队,通过DelayedQueueUpdate()函数更新队列。

集成方式

可将调度器的.c.h文件添加到应用程序的核心目录中完成集成。

单元测试

提供ReadyQueue TestReRunMe test,用于测试调度器相关功能。

示例应用程序

  • 环境温度监测应用(Ambient Temperature Monitor):借助DS3231 RTC传感器每30秒读取环境温度,当温度超用户设定阈值时,通过外部LED闪烁报警。
  • 停车传感器应用(Parking Sensor):读取超声波传感器HC - SR04与物体的距离,报警蜂鸣器根据距离发出不同声音。

安装使用步骤

环境准备

确保已安装合适的IDE和编译器,如Keil MDK - ARM V5。

硬件连接

依据应用程序需求连接硬件,如传感器、LED、蜂鸣器等。

CubeMX配置

使用STM32CubeMX工具配置微控制器,选择正确板卡(如STM32L432KCUx Nucleo板),配置时钟、GPIO、I2C、USART等。

代码集成

将调度器文件(如dqueue.crqueue.cscheduler.c等)复制到项目中,并包含必要的头文件。

编译和烧录

使用所选IDE和编译器编译代码,然后将其烧录到微控制器中。

测试与验证

按照应用程序需求,测试并验证调度器功能。

注意事项

  • 示例应用程序和单元测试基于STM32L432KCUx Nucleo板,采用STM32CubeMX和Keil MDK - ARM工具链。
  • 可能需根据硬件平台进行适当修改和适配。
  • 调度器实现依赖特定的硬件抽象层(HAL)和STM32库。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】