# novaRTOS **Repository Path**: zhang-hang3252/novaRTOS ## Basic Information - **Project Name**: novaRTOS - **Description**: 超精简实时操作系统(或者叫任务调度器),只实现了线程功能。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-05-14 - **Last Updated**: 2026-05-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # novaRTOS 超轻量级嵌入式实时操作系统(RTOS) ## 简介 novaRTOS 是一个专为 ARM Cortex-M 架构设计的轻量级实时操作系统内核实现。采用动态链表管理线程,提供简洁的线程调度与双向循环链表基础设施,适用于资源受限的嵌入式系统。 ## 主要特性 - **轻量级设计**:极小的代码占用,适合 MCU 环境 - **基于 ARM Cortex-M**:使用 SysTick 和 PendSV 实现抢占式任务调度 - **动态线程管理**:通过链表动态管理线程,无固定线程数上限 - **轮转调度**:相同优先级的线程采用时间片轮转调度 - **低功耗支持**:包含空闲线程,无就绪任务时 CPU 进入 WFI 低功耗模式 - **双向链表**:内建双向循环链表,零额外内存开销 ## 核心功能 ### 线程管理 | 函数 | 说明 | |------|------| | `thread_create(func, stack_size)` | 创建新线程并加入就绪链表 | | `thread_start()` | 启动调度器(不会返回) | | `thread_delay(ticks)` | 当前线程延时指定滴答数 | | `thread_yield()` | 主动让出 CPU | | `thread_tick_handler()` | 系统滴答处理(在 SysTick_Handler 中断中调用) | | `thread_switch_handler()` | PendSV 上下文切换(在 PendSV_Handler 中断中调用) | ## 快速开始 ### 编译要求 - 现支持ARM GCC 工具链(arm-none-eabi-gcc)和 keil AC5编译器 - 理论支持所有ARM Cortex-M内核 ### 使用示例 ```c #include "openRTOS.h" void task1(void) { while (1) { // 线程逻辑 thread_delay(100); // 延时 100 个 tick(100ms @ 1000Hz) } } int main(void) { HAL_Init(); SystemClock_Config(); // 创建线程(栈大小 128 字 = 512 字节) thread_create(task1, 128); // 启动调度器(不会返回) thread_start(); return 0; } ``` ## 项目结构 ``` novartos/ ├── kernel # 系统内核源码 ├── module # 系统模块 ├──novaGUI # 图像界面 ├──novaShell # 命令行工具 ``` ## 移植 1:添加kernel所有文件到项目中 2:在PendSV_Handler中断中调用thread_switch_handler 3:在SysTick_Handler中断中调用thread_tick_handler(中断切换不宜切换过快,建议1ms)