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