⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iar-

📁 IAR_example_EasyARM8962.zip
💻
📖 第 1 页 / 共 2 页
字号:
** Modified date:       
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
#if OS_CPU_HOOKS_EN > 0
    void OSTaskStatHook (void)
    {
    }
#endif

/*********************************************************************************************************
** Function name:       OSTaskStkInit
** Descriptions:	This function is called by either OSTaskCreate() or OSTaskCreateExt() to 
**                      initialize the stack frame of the task being created.  
**                      This function is highly processor specific.
**                      OSTaskCreate() 和 OSTaskCreateExt()调用本函数初始化正被创建的任务的堆栈
**                      本函数和具体的处理器有关 
** Input parameters:	task:  A pointer to the task code   任务代码的指针
**                      p_arg: A pointer to a user supplied data area that will be passed to the task
**                              when the task first executes.
**                              用户提供的数据空间的指针,任务运行时会被传递给任务 
**                      ptos:   A pointer to the top of the stack. For this port, it's the highest  
**                              valid address of the stack. 
**                              栈顶的指针。对于本移植,它指向堆栈的最高有效地址。
**                      opt:    Specified options that can be used to alter the behavior of 
*                               OSTaskStkInit().(see uCOS_II.H for OS_TASK_OPT_xxx).
**                              特定选项,可以改变对OSTaskStkInit()的使用方法。
**                              (参看 uCOS_II.H 中的 OS_TASK_OPT_xxx).
** Output parameters:	None 无
** Returned value:	The new location of top-of-stack  新栈顶指针位置         
** Created by:		Steven Zhou 周绍刚
** Created Date:	2007.12.12
**--------------------------------------------------------------------------------------------------------
** Modified by:             
** Modified date:           
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
OS_STK *OSTaskStkInit (void  (*task)(void  *parg), void  *parg, OS_STK  *ptos, INT16U  opt)
{
    OS_STK *stk;


    (void)opt;                                                          /*  'opt' is not used, prevent  */
                                                                        /*  warning 没有用'opt',       */
                                                                        /*  防止编译警告                */
                                                                            
    stk = ptos;                                                         /*  Load stack pointer          */
                                                                        /*  装载堆栈指针                */                                    

                                                                        /*  Registers stacked as if     */
                                                                        /*  auto-saved on exception     */             
	                                                                /*  模拟成异常,自动把寄存器压栈*/

    *(stk) = (INT32U)0x01000000L;                                       /*  xPSR                        */ 
    *(--stk) = (INT32U)task;                                            /*  Entry Point of the task     */
                                                                        /*  任务入口地址                */
    *(--stk) = (INT32U)0xFFFFFFFEL;                                     /*  R14 (LR)  (init value will  */
                                                                        /*  cause fault if ever used)   */
                                                                           
    *(--stk) = (INT32U)0x12121212L;                                     /*  R12                         */
    *(--stk) = (INT32U)0x03030303L;                                     /*  R3                          */
    *(--stk) = (INT32U)0x02020202L;                                     /*  R2                          */
    *(--stk) = (INT32U)0x01010101L;                                     /*  R1                          */
    *(--stk) = (INT32U)parg;                                            /*  R0 : argument  输入参数     */
                                                                        /*  Remaining registers saved on*/
                                                                        /*  process stack               */   
	                                                                /*  剩下的寄存器保存到堆栈      */

    *(--stk) = (INT32U)0x11111111L;                                     /*  R11                         */
    *(--stk) = (INT32U)0x10101010L;                                     /*  R10                         */
    *(--stk) = (INT32U)0x09090909L;                                     /*  R9                          */
    *(--stk) = (INT32U)0x08080808L;                                     /*  R8                          */
    *(--stk) = (INT32U)0x07070707L;                                     /*  R7                          */
    *(--stk) = (INT32U)0x06060606L;                                     /*  R6                          */
    *(--stk) = (INT32U)0x05050505L;                                     /*  R5                          */
    *(--stk) = (INT32U)0x04040404L;                                     /*  R4                          */

    return(stk);
}

/*********************************************************************************************************
** Function name:       OSTaskSwHook
** Descriptions:	The hook function called when a task switch is performed.
**                      任务切换时前调用的钩子函数    
** Input parameters:	None 无
** Output parameters:	None 无
** Returned value:	None 无
** Created by:		Steven Zhou 周绍刚
** Created Date:	2007.12.12
**--------------------------------------------------------------------------------------------------------
** Modified by:             
** Modified date:           
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void OSTaskSwHook (void)
{

}

/*********************************************************************************************************
** Function name:       OSTCBInitHook
** Descriptions:	The hook function called by OS_TCBInit()
**                      OS_TCBInit()调用的钩子函数    
** Input parameters:	ptcb
** Output parameters:	None 无
** Returned value:	None 无
** Created by:		Steven Zhou 周绍刚
** Created Date:	2007.12.12
**--------------------------------------------------------------------------------------------------------
** Modified by:         
** Modified date:
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
#if (OS_CPU_HOOKS_EN > 0) && (OS_VERSION > 203)
    void OSTCBInitHook (OS_TCB  *ptcb)
    {
        (void)ptcb;                                                     /*  Prevent compiler warning    */
                                                                        /*  防止编译警告                */
    }
#endif

/*********************************************************************************************************
** Function name:       OSTimeTickHook
** Descriptions:	The hook function called every tick
**                      每个节拍调用的钩子函数    
** Input parameters:	ptcb
** Output parameters:	None 无
** Returned value:	None 无
** Created by:		Steven Zhou 周绍刚
** Created Date:	2007.12.12
**--------------------------------------------------------------------------------------------------------
** Modified by:         
** Modified date:
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
#if ((OS_CPU_HOOKS_EN > 0) && (OS_TIME_TICK_HOOK_EN > 0)) || (OS_VERSION < 283)
    void OSTimeTickHook (void)
    {
        #if OS_TMR_EN > 0
            OSTmrCtr++;
            if (OSTmrCtr >= (OS_TICKS_PER_SEC / OS_TMR_CFG_TICKS_PER_SEC)) {
                OSTmrCtr = 0;
                OSTmrSignal();
	    }
        #endif
    }
#endif


/*********************************************************************************************************
  END FILE 
*********************************************************************************************************/

⌨️ 快捷键说明

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