mirror of
https://gitee.com/cosyos/cosyos.git
synced 2026-09-23 13:53:38 +08:00
@@ -0,0 +1,20 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Hook
|
||||
* @file copy_hook.c
|
||||
* @brief 副本钩子(用于更新全局变量副本)
|
||||
* @details 当一个非原子访问的全局变量需要在中断中读取时,可在副本钩子中
|
||||
用全局变量的正本来更新副本,可采用赋值、内存拷贝、字符串拷贝等方式。
|
||||
* @author 迟凯峰
|
||||
* @version V1.2.0
|
||||
* @date 2025.03.30
|
||||
******************************************************************************/
|
||||
|
||||
#include "CosyOS.H"
|
||||
#if SYSCFG_COPYHOOK == __ENABLED__
|
||||
|
||||
__WEAK void copy_hook(void) MCUCFG_C51USING
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,23 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Hook
|
||||
* @file debug_hook.c
|
||||
* @brief DEBUG钩子
|
||||
* @details 在系统调试任务中被调用,用户可自行实现DEBUG信息的输出。
|
||||
* @author 迟凯峰
|
||||
* @version V1.2.0
|
||||
* @date 2025.03.30
|
||||
******************************************************************************/
|
||||
|
||||
#include "CosyOS.H"
|
||||
#if SYSCFG_DEBUGGING == __ENABLED__
|
||||
|
||||
#if SYSCFG_DEBUG_SENDLEN == __DISABLED__
|
||||
__WEAK void debug_hook(char *p)
|
||||
#else
|
||||
__WEAK void debug_hook(char *p, size_t len)
|
||||
#endif
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,19 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Hook
|
||||
* @file idle_hook.c
|
||||
* @brief 空闲钩子
|
||||
* @details 在系统空闲任务中被调用,用户可添加自己的代码做一些没有实时性要求的工作。
|
||||
* @author 迟凯峰
|
||||
* @version V1.2.0
|
||||
* @date 2025.03.30
|
||||
******************************************************************************/
|
||||
|
||||
#include "CosyOS.H"
|
||||
#if SYSCFG_IDLEHOOK == __ENABLED__
|
||||
|
||||
__WEAK void idle_hook(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,19 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Hook
|
||||
* @file pendsv_hook.c
|
||||
* @brief 挂起服务钩子
|
||||
* @details 用于处理标志队列中的中断挂起服务。
|
||||
* @author 迟凯峰
|
||||
* @version V1.2.0
|
||||
* @date 2025.03.30
|
||||
******************************************************************************/
|
||||
|
||||
#include "CosyOS.H"
|
||||
#if SYSCFG_PENDSVHOOK == __ENABLED__
|
||||
|
||||
__WEAK void pendsv_hook(void) MCUCFG_C51USING
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,19 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Hook
|
||||
* @file start_hook.c
|
||||
* @brief 启动钩子
|
||||
* @details 在启动任务中被调用,可在此启动用户任务。
|
||||
* @service uStartTask(task, status); 启动任务
|
||||
uStartTask_Ready(task); 启动任务并就绪
|
||||
uStartTask_Suspend(task); 启动任务并挂起
|
||||
* @author 迟凯峰
|
||||
* @version V1.2.0
|
||||
* @date 2025.03.30
|
||||
******************************************************************************/
|
||||
|
||||
#include "CosyOS.H"
|
||||
|
||||
__WEAK void start_hook(void)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Hook
|
||||
* @file tick_hook.c
|
||||
* @brief 滴答钩子
|
||||
* @details 每个系统滴答周期,在系统滴答中断中都会被调用一次,
|
||||
适用于每滴答周期/秒/分/时/日/月/年/...做一次的工作。
|
||||
* @note 1. 如果在滴答钩子中调用服务,应调用滴答API。
|
||||
2. 如果在滴答钩子中调用自定义函数并且MCU内核为8051,自定义函数
|
||||
可能需要添加using属性、或声明为相对寄存器访问。
|
||||
demo1:
|
||||
void your_function(void) MCUCFG_C51USING {... ...}
|
||||
|
||||
demo2:
|
||||
#pragma NOAREGS
|
||||
void your_function(void) {... ...}
|
||||
#pragma AREGS
|
||||
* @author 迟凯峰
|
||||
* @version V1.2.0
|
||||
* @date 2025.03.30
|
||||
******************************************************************************/
|
||||
|
||||
#include "CosyOS.H"
|
||||
#if SYSCFG_TICKHOOK == __ENABLED__
|
||||
|
||||
__WEAK void tick_hook(void) MCUCFG_C51USING
|
||||
{
|
||||
if(true){ /* 每滴答周期执行一次 */
|
||||
|
||||
}
|
||||
#if SYSCFG_SOFTRTC == __ENABLED__
|
||||
if(s_sign_every.halfsec){
|
||||
s_sign_every.halfsec = false;
|
||||
if(true){ /* 每半秒执行一次(每半秒,first tick)*/
|
||||
|
||||
}
|
||||
if(s_sign_every.second){
|
||||
s_sign_every.second = false;
|
||||
if(true){ /* 每秒钟执行一次(每秒,first tick)*/
|
||||
|
||||
}
|
||||
if(s_sign_every.minute){
|
||||
s_sign_every.minute = false;
|
||||
if(true){ /* 每分钟执行一次(每分0秒,first tick)*/
|
||||
|
||||
}
|
||||
if(s_sign_every.hour){
|
||||
s_sign_every.hour = false;
|
||||
if(true){ /* 每小时执行一次(每时0分0秒,first tick)*/
|
||||
|
||||
}
|
||||
if(s_sign_every.day){
|
||||
s_sign_every.day = false;
|
||||
if(true){ /* 每天执行一次(每天0时0分0秒,first tick)*/
|
||||
|
||||
}
|
||||
if(s_sign_every.month){
|
||||
s_sign_every.month = false;
|
||||
if(true){ /* 每月执行一次(每月1日0时0分0秒,first tick)*/
|
||||
|
||||
}
|
||||
if(s_sign_every.year){
|
||||
s_sign_every.year = false;
|
||||
if(true){ /* 每年执行一次(每年1月1日0时0分0秒,first tick)*/
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user