os_cpu_c.c

来自「采用C++改写的uCOS-II,目标系统为MSP430系列CPU。」· C语言 代码 · 共 74 行

C
74
字号
#define  OS_CPU_GLOBALS
#include "..\os\linos.h"
#include "..\cpu\hard\mspper.h"

static void CpuPowerOnDly(void);  //上电延时程序
/*
*******************************************************************************
*                                    堆栈初始化函数                           *
*******************************************************************************
*/
OS_STK *OSTaskStkInit (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt)
{
  INT16U  *top;

  opt    = opt;                 
  top    = (INT16U *)ptos;
  top--;  
  *top = (INT16U)task;
  top--;
  *top = (INT16U)task;   //中断返回指针
  top--;
  *top = (INT16U)0x0008; //状态寄存器
  top--;
  *top = (INT16U)0x0404; //R4
  top--;
  *top = (INT16U)0x0505; //R5
  top--;
  *top = (INT16U)0x0606; //R6
  top--;
  *top = (INT16U)0x0707; //R7
  top--;
  *top = (INT16U)0x0808; //R8
  top--;
  *top = (INT16U)0x0909; //R9
  top--;
  *top = (INT16U)0x1010; //R10
  top--;
  *top = (INT16U)0x1111; //R11
  top--;
  *top = (INT16U)p_arg;  //R12 = p_arg
  top--;
  *top = (INT16U)0x1313; //R13
  top--;
  *top = (INT16U)0x1414; //R14                        
  top--;
  *top = (INT16U)0x1515; //R15
  return ((OS_STK *)top);    
}

/*
*******************************************************************************
*                                  CPU初始化程序                              *
*******************************************************************************
*/
void OSCpuInit(void)
{
  CpuPowerOnDly();
  CpuOscInit();         //CPU时钟初始化
  CpuGpioInit();        //Cpu输入输出口初始化
  CpuTimeraInit(OS_TICK_STEP_TIME); //Cpu定时器A初始化
}

void CpuPowerOnDly(void)
{
  INT16U i;
  for(i=0;i<0x2000;i++)
  {
    asm("  NOP");
    asm("  NOP");
    asm("  NOP");
    asm("  NOP");
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?