打印

简单小巧 MSP430 任务调度程序(增加工程实例)

[复制链接]
2406|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
loobin126|  楼主 | 2011-10-9 12:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 loobin126 于 2011-10-13 13:01 编辑

开发环境:IAR 4.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任务
*/
//----------------------------------------------------------------


用IAR4.20做了一个工程实例,在17楼

FuncSch_V01_02.rar

3.39 KB

相关帖子

沙发
sqcumt123| | 2011-10-9 14:16 | 只看该作者
好东西啊,感谢楼主分享,顶一个,支持

使用特权

评论回复
板凳
lfzhou1006| | 2011-10-10 22:58 | 只看该作者
好东西啊,感谢楼主分享,顶一个,支持

使用特权

评论回复
地板
teet| | 2011-10-11 07:22 | 只看该作者
下载了 感觉很不错

使用特权

评论回复
5
teet| | 2011-10-11 07:23 | 只看该作者
谢谢楼主分享哦

使用特权

评论回复
6
tikelu| | 2011-10-11 13:01 | 只看该作者
讲解很细致

使用特权

评论回复
7
tikelu| | 2011-10-11 13:02 | 只看该作者
楼主辛苦了

使用特权

评论回复
8
hanbing54321| | 2011-10-11 14:59 | 只看该作者
学些了

使用特权

评论回复
9
开鑫浪子| | 2011-10-11 18:50 | 只看该作者
讲解很细致

使用特权

评论回复
10
aass1| | 2011-10-12 07:23 | 只看该作者
很经典

使用特权

评论回复
11
aass1| | 2011-10-12 07:23 | 只看该作者
多谢楼主

使用特权

评论回复
12
foreverly| | 2011-10-12 11:21 | 只看该作者
力荐一下啦。

使用特权

评论回复
13
coco11| | 2011-10-12 14:16 | 只看该作者
多谢啦。

使用特权

评论回复
14
午夜粪车| | 2011-10-13 11:08 | 只看该作者
不错,顶一个

使用特权

评论回复
15
午夜粪车| | 2011-10-13 11:08 | 只看该作者
话说这种有说明的资料很不错啊,比那些光秃秃一个附件好多了

使用特权

评论回复
16
huanben| | 2011-10-13 11:18 | 只看该作者
看着好东西。。。

使用特权

评论回复
17
loobin126|  楼主 | 2011-10-13 12:47 | 只看该作者
本帖最后由 loobin126 于 2011-10-14 12:17 编辑

使用IAR4.20.1做了一个工程实例:

使用的MSP430F5438,晶震XT1使用32.678Mhz,XT2使用8MHz 。

工程中写了2个很简单的任务,example01,example02,主循环(背景任务)空转只喂狗了。
在20ms的时间片中,example01运行3ms,example02 运行2ms,其他时间留给了时背景任务运行。

FunSch_V01_02Example-IAR420.rar

39.2 KB

使用特权

评论回复
18
chenpeng0616| | 2013-4-23 14:01 | 只看该作者
下载了,感觉很不错哦

使用特权

评论回复
19
shenmu2012| | 2013-4-23 16:26 | 只看该作者
应用5438单片机的,很不错的,收下啦

使用特权

评论回复
20
yanyanyan168| | 2013-4-25 11:24 | 只看该作者
工程不全,没有__set_SP_register(SP_Sys)。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

72

帖子

1

粉丝