?? os_cpu_c.c
字號:
/*
*********************************************************************************************************
* uC/OS-II實時內核
*
* (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
* All Rights Reserved
* (c) Copyright ARM Limited 1999. All rights reserved.
*
* ARM 專用代碼
*
*
* 文件名稱 : OS_CPU_C.C
*********************************************************************************************************
*/
#define OS_CPU_GLOBALS
#include "..\INC\includes.h"
/*
*********************************************************************************************************
* 操作系統的初始化鉤子函數
* (開始處)
*
* 函數描述: 該函數在函數 OSInit()開始處被調用。
*
* 輸入參數: 無
*
* 注釋 : 在調用過程中,中斷應是關閉的。
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
void OSInitHookBegin (void)
{
}
#endif
/*
*********************************************************************************************************
* 操作系統的初始化鉤子函數
* (結束處)
*
* 函數描述: 該函數在函數 OSInit()結束處被調用。
*
* 輸入參數: 無
*
* 注釋 : 在調用過程中,中斷應是關閉的。
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
void OSInitHookEnd (void)
{
}
#endif
/*
*********************************************************************************************************
* 初始化任務堆棧
*
* 函數描述: 該函數由 OSTaskCreate() 或 OSTaskCreateExt() 調用以初始化創建的任務的堆棧。
*
* 輸入參數: task 指向任務代碼的指針
*
* pdata 當任務首先執行時,傳遞給任務的由用戶提供的數據域的指針
*
* ptos 指向棧頂的指針。'ptos' 指到任務堆棧中的空閑棧處。如果OS_STK_GROWTH 設為 1,
* 則'ptos'將是最高的有效堆棧地址。如果OS_STK_GROWTH 設為0, 'ptos' 將是最低的
* 有效堆棧地址。
*
* opt 用于改變 OSTaskStkInit()的特殊選項。
* (見 uCOS_II.H 的 OS_TASK_OPT_???).
*
* 返回值 : 在處理器的寄存器以恰當的順序壓入堆棧后,總是返回新的棧頂的地址。
*
* 注意 : 任務開始執行時,中斷是打開的。通過設定PSW到0x0002可以改變。在該種情形下,當任務啟動時,中斷關閉。
* 應用程序應負責在任務的開始處打開中斷。需要修改OSTaskIdle() 和OSTaskStat() 以便能打開中斷。如果
* 沒有這么做,將使系統崩潰。
*********************************************************************************************************
*/
OS_STK *OSTaskStkInit(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U opt)
{
OS_STK *stk;
opt = opt; /* 'opt' 沒有使用, 預防警告錯誤 */
stk = ptos; /* 加載堆棧指針 */
*(stk) = (OS_STK)task; /* 進入點 */
*(--stk) = (INT32U)0; /* lr */
*(--stk) = (INT32U)0; /* r12 */
*(--stk) = (INT32U)0; /* r11 */
*(--stk) = (INT32U)0; /* r10 */
*(--stk) = (INT32U)0; /* r9 */
*(--stk) = (INT32U)0; /* r8 */
*(--stk) = (INT32U)0; /* r7 */
*(--stk) = (INT32U)0; /* r6 */
*(--stk) = (INT32U)0; /* r5 */
*(--stk) = (INT32U)0; /* r4 */
*(--stk) = (INT32U)0; /* r3 */
*(--stk) = (INT32U)0; /* r2 */
*(--stk) = (INT32U)0; /* r1 */
*(--stk) = (INT32U)pdata; /* r0 */
*(--stk) = (INT32U)(SVC32MODE|0x0); /* CPSR SVC32MODE */
*(--stk) = (INT32U)(SVC32MODE|0x0); /* SPSR SVC32MODE */
return (stk);
}
/*$PAGE*/
#if OS_CPU_HOOKS_EN
/*
*********************************************************************************************************
* 任務創建鉤子函數
*
* 函數描述 : 當任務創建時,該函數被調用。
*
* 輸入參數 : ptcb 指向創建的任務的任務控制塊的指針。
*
* 注意 : 在調用過程中,中斷應是關閉的。
*********************************************************************************************************
*/
void OSTaskCreateHook (OS_TCB *ptcb)
{
ptcb = ptcb; /* 預防警告錯誤 */
}
/*
*********************************************************************************************************
* 刪除任務的鉤子函數
*
* 函數描述 : 當任務刪除時,該函數被調用。
*
* 輸入參數 : ptcb 指向被刪除的任務的任務控制塊的指針。
*
* 注意 : 在調用過程中,中斷應是關閉的。
*********************************************************************************************************
*/
void OSTaskDelHook (OS_TCB *ptcb)
{
ptcb = ptcb; /* 預防警告錯誤 */
}
/*
*********************************************************************************************************
* 空閑任務的鉤子函數
*
* 函數描述: 該函數被空閑任務調用 該函數用于做一些如停止CPU以節省電源的工作。
*
* 輸入參數: 無
*
* 注意 : 在調用過程中,中斷應是關閉的。
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION >= 251
void OSTaskIdleHook (void)
{
}
#endif
/*
*********************************************************************************************************
* 任務控制塊初始化的鉤子函數
*
* Description: 在建立起大部分的TCB后,該函數由OS_TCBInit()調用。
*
* 輸入參數 : ptcb 指向創建的任務的任務控制塊的指針。
*
* 注意 : 在調用過程中,中斷可開可閉。
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
void OSTCBInitHook (OS_TCB *ptcb)
{
ptcb = ptcb; /* 預防警告錯誤 */
}
#endif
/*
*********************************************************************************************************
* 任務切換鉤子函數
*
* 函數描述: 當任務切換時該函數被調用。允許用戶在任務切換時完成一定的操作。
*
* 輸入參數 :無
*
* 注意 : 1)在調用過程中,中斷應是關閉的。
* 2)指向任務的TCB的全局指針 'OSTCBHighRdy' 將切換進 (例如,最高優先級任務) 以及, 指向任務的
* 'OSTCBCur'被切換出(例如 剝奪式任務).
*********************************************************************************************************
*/
void OSTaskSwHook (void)
{
}
/*
*********************************************************************************************************
* 統計任務的鉤子函數
*
* 函數描述: 該函數被uC/OS-II'的統計任務每秒調用一次。這允許用戶填加功能到統計任務里。
*
* 輸入參數 : 無
*********************************************************************************************************
*/
void OSTaskStatHook (void)
{
}
/*
*********************************************************************************************************
* 時鐘節拍的鉤子函數
*
* 函數描述: 每個節拍調用該函數一次。
*
* 輸入參數: 無
*
* 注意 : 在調用過程中,中斷可開可閉。
*********************************************************************************************************
*/
#if (OS_CPU_HOOKS_EN > 0) && (OS_TIME_TICK_HOOK_EN > 0)
void OSTimeTickHook (void)
{
}
#endif
INT32U OSIntCtxSwFlag = 0; /* 使用任務切換標志*/
#endif //OS_CPU_HOOKS_EN
/*
*************************************************************************************************************
** 結束文件 **
*************************************************************************************************************
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -