# 时间片框架 **Repository Path**: poplar111/time-slice-framework ## Basic Information - **Project Name**: 时间片框架 - **Description**: 基于时间片的裸机程序框架 - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2024-03-03 - **Last Updated**: 2025-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 时间片框架 #### 介绍 基于时间片的裸机程序框架 #### 软件架构 软件架构说明 #### 移植 1. 将os.c, os.h, list.h添加到工程. 2. 将time_cb()放到1ms中断的定时器中. 3. 使用add_task()创建任务. 4. 将run_task()放到while(1)中, 进行任务调度. #### 函数介绍 ##### void add_task(task_t *task, void* param); 1. 添加任务的函数. 2. task:任务结构体. 3. param:传入的参数,一般如果不需要传入NULL, 如果需要传入数据, 则这个param必须是一个静态或全局变量. 3. 只能用于系统未运行时的任务添加。 ##### void notify_task(task_t *task, void *param); 1. 通知任务, 让任务执行一次. 2. task:任务结构体. 3. param:传入的参数,一般如果不需要传入NULL, 如果需要传入数据, 则这个param必须是一个静态或全局变量. 4. 该函数会把通知的任务执行一遍就删除, 后续该任务无法被执行到. ##### void wakeup_task(task_t *task, void *param); 1. 唤醒任务, 让任务一直执行. 2. task:任务结构体. 3. param:传入的参数,一般如果不需要传入NULL, 如果需要传入数据, 则这个param必须是一个静态或全局变量. 4. 该函数会把任务从延时队列直接放到就绪队列, 并且任务运行后, 继续放到延时队列重新计算. 4. 可以添加任务,并且添加的任务会立即执行。 ##### void delet_task(task_t *task); 1. 删除任务. 2. 会搜索运行队列, 就绪队列, 等待队列, 如果任务在就绪队列和等待队列,则直接删除, 如果删除的任务在运行队列, 则等到该任务运行时, 会阻止其运行, 并将队列删除. ##### void run_task(void); 1. 调度任务. ##### void time_cb(void); 1. 1ms中断定时 ##### unsigned int current_time(void); 1. 获取当前系统时间 ##### unsigned int time_interval(unsigned int *start_time); 1. 获取时间间隔.