From 022128330e2f8ec39265a7c348dae51dba1bc498 Mon Sep 17 00:00:00 2001 From: Lizongdi <1210855344@qq.com> Date: Fri, 4 Sep 2026 14:50:23 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=B8=BB=E7=BA=BF=E5=BE=85=E5=90=88?= =?UTF-8?q?=E3=80=91=E5=BE=AE=E7=A7=92=E7=BA=A7=E5=BB=B6=E6=97=B6=E5=9C=A8?= =?UTF-8?q?freeRTOS=E4=B8=8B=E6=94=B9=E4=B8=BA=E4=BD=BF=E7=94=A8DWT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bspMCU/My_freeRTOS.c | 2 ++ bspMCU/bsp_pin.c | 13 +++++++++++++ bspMCU/include/bsp_pin.h | 5 +++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/bspMCU/My_freeRTOS.c b/bspMCU/My_freeRTOS.c index 10b3b3a..1c0f12f 100644 --- a/bspMCU/My_freeRTOS.c +++ b/bspMCU/My_freeRTOS.c @@ -26,6 +26,7 @@ #include "string.h" #include "stdio.h" #include "lua_base.h" +#include "bsp_pin.h" /*----------------------------------------------* * 外部变量说明 * @@ -206,6 +207,7 @@ void Rd_Delay(uint32_t Delay) void MyTask_Init(void) { + bsp_dwt_init(); #ifndef USE_TALNET const osThreadAttr_t Lua_attributes = { .name = "LuaREPL", diff --git a/bspMCU/bsp_pin.c b/bspMCU/bsp_pin.c index 29d970d..95ca770 100644 --- a/bspMCU/bsp_pin.c +++ b/bspMCU/bsp_pin.c @@ -15,8 +15,20 @@ void bsp_pin_init(GPIO_TypeDef *port, uint16_t pin, uint8_t mode) HAL_GPIO_Init(port, &GPIO_InitStruct); } +void bsp_dwt_init(void) +{ + CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; // 使能 DWT + DWT->CYCCNT = 0; // 清零周期计数器 + DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; // 使能周期计数器 +} + void delay_us(int nus) { +#ifdef USE_FREERTOS + uint32_t start = DWT->CYCCNT; // 记录起始计数值 + uint32_t ticks = nus * (SystemCoreClock / 1000000); // 计算需要的时钟周期数 + while ((DWT->CYCCNT - start) < ticks); // 等待达到目标周期数 +#else uint32_t ticks; uint32_t told,tnow,tcnt=0; uint32_t reload=SysTick->LOAD; //LOAD的值 @@ -33,4 +45,5 @@ void delay_us(int nus) if(tcnt>=ticks)break; //时间超过/等于要延迟的时间,则退出. } }; +#endif } diff --git a/bspMCU/include/bsp_pin.h b/bspMCU/include/bsp_pin.h index c20510c..9829105 100644 --- a/bspMCU/include/bsp_pin.h +++ b/bspMCU/include/bsp_pin.h @@ -59,8 +59,8 @@ extern "C"{ /*==============================================* * include header files * *----------------------------------------------*/ - - +#include "common.h" +#include "main.h" /*==============================================* @@ -80,6 +80,7 @@ extern "C"{ void bsp_pin_init(GPIO_TypeDef *port, uint16_t pin, uint8_t mode); void delay_us(int nus); +void bsp_dwt_init(void); #ifdef __cplusplus #if __cplusplus