-
任务延时列表
任务延时列表从就绪列表删除, 添加到延时列表实现两条列表, 一条是溢出列表, 一条是没有溢出的列表static List_t xDelayedTaskList1;static List_t xDelayedTaskList2;static List_t * volatile pxDelayedTaskList;static List_t * volatile pxOverflowDelayedTaskList;//初始化列表void prvInitialiseTaskLists( void...…
-
支持任务多优先级
支持任务多优先级找到最高优先级的任务的任务块/*************************************************************************** 宏定义**************************************************************************//* 将任务添加到就绪列表 */ ...…
-
空闲任务阻塞延时
空闲任务和阻塞延时之前使用的是软件延时, CPU空等来延时, RTOS使用阻塞延时, 任务需要延时的时候放弃CPU使用权, 没有其他任务的时候会运行空闲任务空闲任务的优先级最低, 启动调度器的时候创建/**************空闲任务*****************/StackType_t IdleTaskStack[configMINIMAL_STACK_SIZE];TCB_t IdleTaskTCB; //控制块void vApplicationGetIdleTaskMemory...…
-
支持任务多优先级
支持任务多优先级找到最高优先级的任务的任务块/*************************************************************************** 宏定义**************************************************************************//* 将任务添加到就绪列表 */ ...…
-
空闲任务阻塞延时
空闲任务和阻塞延时之前使用的是软件延时, CPU空等来延时, RTOS使用阻塞延时, 任务需要延时的时候放弃CPU使用权, 没有其他任务的时候会运行空闲任务空闲任务的优先级最低, 启动调度器的时候创建/**************空闲任务*****************/StackType_t IdleTaskStack[configMINIMAL_STACK_SIZE];TCB_t IdleTaskTCB; //控制块void vApplicationGetIdleTaskMemory...…
-
临界段
临界段在执行的时候不被中断的函数一般是在系统调度以及外部中断的时候会被打断 PRIMASK: 设置为1以后关闭所有可屏蔽中断, 只剩下NMI和硬FSULT可以响应 FAULTMASK, 设置为1, 只有NMI可以响应 BASEPRI: 最多有九位, 设置为一个数, 优先级比他大的都屏蔽 实现//关闭中断#define portDISABLE_INTERRUPTS() vPortRaiseBASEPRI()//在中断中使用,中断保护版本#defi...…
-
临界段
临界段在执行的时候不被中断的函数一般是在系统调度以及外部中断的时候会被打断 PRIMASK: 设置为1以后关闭所有可屏蔽中断, 只剩下NMI和硬FSULT可以响应 FAULTMASK, 设置为1, 只有NMI可以响应 BASEPRI: 最多有九位, 设置为一个数, 优先级比他大的都屏蔽 实现//关闭中断#define portDISABLE_INTERRUPTS() vPortRaiseBASEPRI()//在中断中使用,中断保护版本#defi...…
-
任务切换创建
任务创建切换把系统分割为一个个独立无法返回的函数, 函数称之为任务 为每一个任务分配栈空间/***********定义任务栈************/#define TASK1_STACK_SIZE 20StackType_t Task1Stack[TASK1_STACK_SIZE];TCB_t TASK1_TCB;#define TASK2_STACK_SIZE 20StackType_t Task2Stack[TASK2_STACK_SIZE];TCB_t TASK2_TCB...…