feat(os): 添加 uC/OS-II 实时操作系统支持
- 在项目中集成 uC/OS-II 源代码和配置文件 - 修改 CMakeLists.txt 以包含 uC/OS-II 相关路径和源文件 - 更新 main.c 以使用 uC/OS-II 创建任务和管理调度 - 移除原有的裸机程序结构,为使用操作系统做准备
This commit is contained in:
256
libs/uC-OS2/app_hooks.c
Normal file
256
libs/uC-OS2/app_hooks.c
Normal file
@ -0,0 +1,256 @@
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* EXAMPLE CODE
|
||||
*
|
||||
* This file is provided as an example on how to use Micrium products.
|
||||
*
|
||||
* Please feel free to use any application code labeled as 'EXAMPLE CODE' in
|
||||
* your application products. Example code may be used as is, in whole or in
|
||||
* part, or may be used as a reference only. This file can be modified as
|
||||
* required to meet the end-product requirements.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
*
|
||||
* uC/OS-II
|
||||
* Application Hooks
|
||||
*
|
||||
* Filename : app_hooks.c
|
||||
* Version : V2.93.01
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INCLUDE FILES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#include <os.h>
|
||||
#include "stm32f1xx_it.h"
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* EXTERN GLOBAL VARIABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL CONSTANTS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL DATA TYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL TABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL GLOBAL VARIABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL FUNCTION PROTOTYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
*********************************************************************************************************
|
||||
** GLOBAL FUNCTIONS
|
||||
*********************************************************************************************************
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
*********************************************************************************************************
|
||||
** uC/OS-II APP HOOKS
|
||||
*********************************************************************************************************
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#if (OS_APP_HOOKS_EN > 0)
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* TASK CREATION HOOK (APPLICATION)
|
||||
*
|
||||
* Description : This function is called when a task is created.
|
||||
*
|
||||
* Argument(s) : ptcb is a pointer to the task control block of the task being created.
|
||||
*
|
||||
* Note(s) : (1) Interrupts are disabled during this call.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
void App_TaskCreateHook (OS_TCB *ptcb)
|
||||
{
|
||||
(void)ptcb;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* TASK DELETION HOOK (APPLICATION)
|
||||
*
|
||||
* Description : This function is called when a task is deleted.
|
||||
*
|
||||
* Argument(s) : ptcb is a pointer to the task control block of the task being deleted.
|
||||
*
|
||||
* Note(s) : (1) Interrupts are disabled during this call.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
void App_TaskDelHook (OS_TCB *ptcb)
|
||||
{
|
||||
(void)ptcb;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* IDLE TASK HOOK (APPLICATION)
|
||||
*
|
||||
* Description : This function is called by OSTaskIdleHook(), which is called by the idle task. This hook
|
||||
* has been added to allow you to do such things as STOP the CPU to conserve power.
|
||||
*
|
||||
* Argument(s) : none.
|
||||
*
|
||||
* Note(s) : (1) Interrupts are enabled during this call.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#if OS_VERSION >= 251
|
||||
void App_TaskIdleHook (void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* STATISTIC TASK HOOK (APPLICATION)
|
||||
*
|
||||
* Description : This function is called by OSTaskStatHook(), which is called every second by uC/OS-II's
|
||||
* statistics task. This allows your application to add functionality to the statistics task.
|
||||
*
|
||||
* Argument(s) : none.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
void App_TaskStatHook (void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* TASK RETURN HOOK (APPLICATION)
|
||||
*
|
||||
* Description: This function is called if a task accidentally returns. In other words, a task should
|
||||
* either be an infinite loop or delete itself when done.
|
||||
*
|
||||
* Arguments : ptcb is a pointer to the task control block of the task that is returning.
|
||||
*
|
||||
* Note(s) : none
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#if OS_VERSION >= 289
|
||||
void App_TaskReturnHook (OS_TCB *ptcb)
|
||||
{
|
||||
(void)ptcb;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* TASK SWITCH HOOK (APPLICATION)
|
||||
*
|
||||
* Description : This function is called when a task switch is performed. This allows you to perform other
|
||||
* operations during a context switch.
|
||||
*
|
||||
* Argument(s) : none.
|
||||
*
|
||||
* Note(s) : (1) Interrupts are disabled during this call.
|
||||
*
|
||||
* (2) It is assumed that the global pointer 'OSTCBHighRdy' points to the TCB of the task that
|
||||
* will be 'switched in' (i.e. the highest priority task) and, 'OSTCBCur' points to the
|
||||
* task being switched out (i.e. the preempted task).
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#if OS_TASK_SW_HOOK_EN > 0
|
||||
void App_TaskSwHook (void)
|
||||
{
|
||||
PendSV_Handler();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* OS_TCBInit() HOOK (APPLICATION)
|
||||
*
|
||||
* Description : This function is called by OSTCBInitHook(), which is called by OS_TCBInit() after setting
|
||||
* up most of the TCB.
|
||||
*
|
||||
* Argument(s) : ptcb is a pointer to the TCB of the task being created.
|
||||
*
|
||||
* Note(s) : (1) Interrupts may or may not be ENABLED during this call.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#if OS_VERSION >= 204
|
||||
void App_TCBInitHook (OS_TCB *ptcb)
|
||||
{
|
||||
(void)ptcb;
|
||||
if (ptcb->OSTCBExtPtr != 0) {
|
||||
ptcb->OSTCBTaskName = (unsigned char*)ptcb->OSTCBExtPtr;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* TICK HOOK (APPLICATION)
|
||||
*
|
||||
* Description : This function is called every tick.
|
||||
*
|
||||
* Argument(s) : none.
|
||||
*
|
||||
* Note(s) : (1) Interrupts may or may not be ENABLED during this call.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#if OS_TIME_TICK_HOOK_EN > 0
|
||||
void App_TimeTickHook (void)
|
||||
{
|
||||
SysTick_Handler();
|
||||
}
|
||||
#endif
|
||||
#endif
|
Reference in New Issue
Block a user