项目简介
本项目致力于开发适用于嵌入式系统的合作调度器。该调度器支持8个优先级水平,且低优先级值代表高优先级。采用链表实现,入队复杂度为O(N),出队复杂度为O(1),N为已调度任务数量。
项目的主要特性和功能
调度器实现
- 就绪队列(Ready Queue):由节点链表构成,每个节点含就绪任务指针与优先级,可通过
QueTask()
和Dispatch()
进行入队和出队操作。 - 延迟队列(Delayed Queue):同样是节点链表,节点包含延迟任务指针、原始优先级及关联延迟。用
ReRunMe()
入队,通过DelayedQueueUpdate()
函数更新队列。
集成方式
可将调度器的.c
和.h
文件添加到应用程序的核心目录中完成集成。
单元测试
提供ReadyQueue Test
和ReRunMe 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.c
、rqueue.c
、scheduler.c
等)复制到项目中,并包含必要的头文件。
编译和烧录
使用所选IDE和编译器编译代码,然后将其烧录到微控制器中。
测试与验证
按照应用程序需求,测试并验证调度器功能。
注意事项
- 示例应用程序和单元测试基于STM32L432KCUx Nucleo板,采用STM32CubeMX和Keil MDK - ARM工具链。
- 可能需根据硬件平台进行适当修改和适配。
- 调度器实现依赖特定的硬件抽象层(HAL)和STM32库。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】