开发环境:IAR4.20.1 硬件平台:MSP430F5438 主频:16MHz
功能:实现用户任务按照时间片调度运行。 说明:任务分为背景任务(主线程)和用户任务,当定义好时间片的大小和用 户任务的执行时刻后,随着时间指针的运行,到了运行时刻的用户任务 便开始执行,到了其挂起时刻便停止运行。在各任务的间隙执行背景任 务(主线程)。 原理:利用1ms中断服务程序的返回,进行任务切换。当需要切换任务时,将 当前任务的R4~R15压入其堆栈,并保存其栈顶地址;将欲切换任务的栈 顶地址赋给SP,然后从该任务的堆栈中单出R4~R15
*******************************************************************/
//--------------使用说明------------------------------------------ /* 不支持中断嵌套 1ms中断中执行调度,将调度代码放在中断服务程序的最后 任务初始化函数void InitFuncSch(void),放在开中断之后,进主循环之前 任务书写格式:
void name(void) { while(1) { //喂狗 } }
必须是一个无限循环 每循环一次应当喂狗
定义任务按照以下步骤: 1.定义任务数量 2.定义任务堆栈大小 3.定义时间片的长度,单位ms 4.定义任务堆栈(一个数组) 5.填任务定义表FuncDef[][4],[0]表示任务堆栈大小 ,[1]表示任务堆栈首地址, [2]表示任务启动时间点,[3]表示任务挂起时间点 6.将任务函数名,填到任务列表中 7.如需测试任务堆栈的使用最大量,开放 EN_TestStack 定义,各任务使用堆栈的最大值 放在数组SP_ByteMax[Num_FS]中,0~Num_FS-1 对应了 1~Num_FS任务 */
|