From 4c697b011f1ab0801053c5d200a369cbfea4acc7 Mon Sep 17 00:00:00 2001 From: RB Date: Sun, 27 Apr 2025 14:30:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0task=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- User/task/init.c | 2 +- User/task/task.c | 41 +++++++++++++++++++++++++++++++++++++++ User/task/task.c.template | 41 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 User/task/task.c create mode 100644 User/task/task.c.template diff --git a/User/task/init.c b/User/task/init.c index 425314a..2b3a65c 100644 --- a/User/task/init.c +++ b/User/task/init.c @@ -3,7 +3,7 @@ */ /* Includes ----------------------------------------------------------------- */ -#include "task\\user_task.h" +#include "task\user_task.h" /* Private typedef ---------------------------------------------------------- */ /* Private define ----------------------------------------------------------- */ /* Private macro ------------------------------------------------------------ */ diff --git a/User/task/task.c b/User/task/task.c new file mode 100644 index 0000000..71af011 --- /dev/null +++ b/User/task/task.c @@ -0,0 +1,41 @@ +/* + {{task_name}} Task +*/ + +/* Includes ----------------------------------------------------------------- */ +#include "task\user_task.h" + +/* Private typedef ---------------------------------------------------------- */ +/* Private define ----------------------------------------------------------- */ +/* Private macro ------------------------------------------------------------ */ +/* Private variables -------------------------------------------------------- */ +/* Private function --------------------------------------------------------- */ +/* Exported functions ------------------------------------------------------- */ + +/** + * \brief {{task_name}} Task + * + * \param argument 未使用 + */ +void {{task_function}}(void *argument) { + (void)argument; /* 未使用argument,消除警告 */ + + /* 计算任务运行到指定频率需要等待的tick数 */ + const uint32_t delay_tick = osKernelGetTickFreq() / {{task_frequency}}; + + osDelay({{task_delay}}); /* 延时一段时间再开启任务 */ + + uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */ + while (1) { + /* 记录任务所使用的的栈空间 */ + task_runtime.stack_water_mark.{{task_variable}} = osThreadGetStackSpace(osThreadGetId()); + + tick += delay_tick; /* 计算下一个唤醒时刻 */ + + /*User code begin*/ + + /*User code end*/ + + osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */ + } +} \ No newline at end of file diff --git a/User/task/task.c.template b/User/task/task.c.template new file mode 100644 index 0000000..71af011 --- /dev/null +++ b/User/task/task.c.template @@ -0,0 +1,41 @@ +/* + {{task_name}} Task +*/ + +/* Includes ----------------------------------------------------------------- */ +#include "task\user_task.h" + +/* Private typedef ---------------------------------------------------------- */ +/* Private define ----------------------------------------------------------- */ +/* Private macro ------------------------------------------------------------ */ +/* Private variables -------------------------------------------------------- */ +/* Private function --------------------------------------------------------- */ +/* Exported functions ------------------------------------------------------- */ + +/** + * \brief {{task_name}} Task + * + * \param argument 未使用 + */ +void {{task_function}}(void *argument) { + (void)argument; /* 未使用argument,消除警告 */ + + /* 计算任务运行到指定频率需要等待的tick数 */ + const uint32_t delay_tick = osKernelGetTickFreq() / {{task_frequency}}; + + osDelay({{task_delay}}); /* 延时一段时间再开启任务 */ + + uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */ + while (1) { + /* 记录任务所使用的的栈空间 */ + task_runtime.stack_water_mark.{{task_variable}} = osThreadGetStackSpace(osThreadGetId()); + + tick += delay_tick; /* 计算下一个唤醒时刻 */ + + /*User code begin*/ + + /*User code end*/ + + osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */ + } +} \ No newline at end of file