首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于us/OS-II操作系统的断路器控制器研制
来源:本站整理  作者:佚名  2009-05-18 14:02:15



  对OS_CPU.H文件的编写主要包括对以下4个宏进行设置:

  ① OS_ENTER_CRITICAL()

  ② OS_EXIT_ CRITICAL()

  ③ OS_STK_GROWTH

  ④ OS_TASK_SW()

  其中,OS_ENTER_CRITICAL()和OS_EXIT_ CRITICAL()是关于关中断和开中断的设置,由于在TMS320LF2407A中C编译器可以嵌入汇编语言,所以本文设置:

  #define OS_ENTER_CRITICAL() asm(" SETC INTM") //关中断

  #define OS_EXIT_CRITICAL() asm(" CLRC INTM") //开中断

  OS_STK_GROWTH是关于堆栈的使用方式,由于TMS320LF2407A中堆栈是从低地址向高地址递增的,所以本文设置:

  #define OS_STK_GROWTH 0

  OS_TASK_SW()是在任务切换中使用的,任务切换其实就是将原来任务的相关寄存器值入栈保存,以便以后这个任务被再次调用时可以恢复原先的相关寄存器值。本文设置OS_TASK_SW()作为中断调用软中断指令OSCtxSw。

  对OS_CPU_C.C文件的编写包括编写以下10个C语言函数:

  ① OSTaskStkInit()② OSTaskCreatHook()③ OSTaskDelHook()④ OSTaskSwHook()

  ⑤ OSTaskIdleHook()⑥ OSTaskStatHook()⑦ OSTimeTickHook()⑧ OSIintHookBegin()

  ⑨ OSInitHookEnd()⑩ OSTCBInitHook()

  在本文的实时嵌入式系统设计中,只对OSTaskStkInit()函数进行了编写,OSTaskStkInit()函数的作用是初始化任务的栈结构,将任务所有寄存器的值都保存到堆栈中。OSTaskStkInit()函数的示意性代码如下所示。

  OS_STK *OSTaskStkInit(void (*task)(void *pd),

  void *pdata,

  OS_STK *ptos,

  INT16U opt)

  {

  opt = opt;

  *ptos++ = (OS_STK)pdata; /* augument */

  *ptos++ = (OS_STK)0; /* blank */

  *ptos++ = (OS_STK)0x27FC;/* ST1 */

  *ptos++ = (OS_STK)0x2600;/* ST0 */

  *ptos++ = (OS_STK)0; /* ACCH */

  *ptos++ = (OS_STK)0; /* ACCL */

  *ptos++ = (OS_STK)0; /* PH */

  *ptos++ = (OS_STK)0; /* PL */

  *ptos++ = (OS_STK)0; /* T */

  *ptos++ = (OS_STK)0; /* AR0 */

  *ptos++ = (OS_STK)0; /* AR2 */

  *ptos++ = (OS_STK)0; /* AR3 */

  *ptos++ = (OS_STK)0; /* AR4 */

  *ptos++ = (OS_STK)0; /* AR5 */

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:56,519.53000 毫秒