From 89fbaf8e55101d08fe6a0f511c79ca4050839bb6 Mon Sep 17 00:00:00 2001 From: Robofish <1683502971@qq.com> Date: Thu, 31 Jul 2025 04:48:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E7=89=88=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/User_code/bsp/delay.h | 46 ++++++++++++++++----------- assets/User_code/bsp/describe.csv | 3 +- assets/User_code/task/task.c.template | 20 ++++++------ 3 files changed, 40 insertions(+), 29 deletions(-) diff --git a/assets/User_code/bsp/delay.h b/assets/User_code/bsp/delay.h index e7c68fc..1a95039 100644 --- a/assets/User_code/bsp/delay.h +++ b/assets/User_code/bsp/delay.h @@ -1,24 +1,34 @@ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - /* Includes ----------------------------------------------------------------- */ -#include +#include "bsp\delay.h" -#include "bsp/bsp.h" +#include +#include -/* Exported constants ------------------------------------------------------- */ -/* Exported macro ----------------------------------------------------------- */ -/* Exported types ----------------------------------------------------------- */ -/* Exported functions prototypes -------------------------------------------- */ -int8_t BSP_Delay(uint32_t ms); +/* Private define ----------------------------------------------------------- */ +/* Private macro ------------------------------------------------------------ */ +/* Private typedef ---------------------------------------------------------- */ +/* Private variables -------------------------------------------------------- */ +/* Private function -------------------------------------------------------- */ +/* Exported functions ------------------------------------------------------- */ +int8_t BSP_Delay(uint32_t ms) { + uint32_t tick_period = 1000u / osKernelGetTickFreq(); + uint32_t ticks = ms / tick_period; -int8_t BSP_Delay_Init(void); -int8_t BSP_Delay_us(uint32_t us); -int8_t BSP_Delay_ms(uint32_t ms); + switch (osKernelGetState()) { + case osKernelError: + case osKernelReserved: + case osKernelLocked: + case osKernelSuspended: + return BSP_ERR; -#ifdef __cplusplus + case osKernelRunning: + osDelay(ticks ? ticks : 1); + break; + + case osKernelInactive: + case osKernelReady: + HAL_Delay(ms); + break; + } + return BSP_OK; } -#endif diff --git a/assets/User_code/bsp/describe.csv b/assets/User_code/bsp/describe.csv index 0fee207..2788534 100644 --- a/assets/User_code/bsp/describe.csv +++ b/assets/User_code/bsp/describe.csv @@ -1,2 +1,3 @@ uart,要求开启dma和中断 -can,要求开启can的中断 \ No newline at end of file +can,要求开启can的中断 +delay,暂时只有delay_ms函数 \ No newline at end of file diff --git a/assets/User_code/task/task.c.template b/assets/User_code/task/task.c.template index eef30d1..e238fa2 100644 --- a/assets/User_code/task/task.c.template +++ b/assets/User_code/task/task.c.template @@ -5,17 +5,17 @@ /* Includes ----------------------------------------------------------------- */ #include "task/user_task.h" -/* USER INCLUDE BEGIN*/ +/* USER INCLUDE BEGIN */ -/* USER INCLUDE END*/ +/* USER INCLUDE END */ /* Private typedef ---------------------------------------------------------- */ /* Private define ----------------------------------------------------------- */ /* Private macro ------------------------------------------------------------ */ /* Private variables -------------------------------------------------------- */ -/* USER STRUCT BEGIN*/ +/* USER STRUCT BEGIN */ -/* USER STRUCT END*/ +/* USER STRUCT END */ /* Private function --------------------------------------------------------- */ /* Exported functions ------------------------------------------------------- */ @@ -28,11 +28,11 @@ void {{task_function}}(void *argument) { osDelay({{task_delay}}); /* 延时一段时间再开启任务 */ - /* USER CODE INIT BEGIN*/ - - /* USER CODE INIT END*/ - uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */ + /* USER CODE INIT BEGIN */ + + /* USER CODE INIT END */ + while (1) { tick += delay_tick; /* 计算下一个唤醒时刻 */ /* USER CODE BEGIN */ @@ -43,9 +43,9 @@ void {{task_function}}(void *argument) { {% else %} osDelay({{task_delay}}); /* 延时一段时间再开启任务 */ - /* USER CODE INIT BEGIN*/ + /* USER CODE INIT BEGIN */ - /* USER CODE INIT END*/ + /* USER CODE INIT END */ while (1) { /* USER CODE BEGIN */