From adfc7e798b9cbdd022bf8df971843436912a0fe5 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期日, 20 七月 2025 16:58:30 +0800 Subject: [PATCH] 成功移植g_com_map表逻辑,初步测试能读能写,并且TDOA效果和官方一致 --- keil/include/components/wsf/sources/port/baremetal/wsf_os.c | 37 +++++++++++-------------------------- 1 files changed, 11 insertions(+), 26 deletions(-) diff --git a/keil/include/components/wsf/sources/port/baremetal/wsf_os.c b/keil/include/components/wsf/sources/port/baremetal/wsf_os.c index 0721ab2..175d3a7 100644 --- a/keil/include/components/wsf/sources/port/baremetal/wsf_os.c +++ b/keil/include/components/wsf/sources/port/baremetal/wsf_os.c @@ -29,11 +29,12 @@ #include "wsf_os.h" #include "wsf_assert.h" #include "wsf_trace.h" -#include "wsf_timer.h" +#include "mk_timer_list.h" #include "wsf_queue.h" #include "wsf_buf.h" #include "wsf_msg.h" #include "wsf_cs.h" +#include "mk_power.h" #if defined(RTOS_CMSIS_RTX) && (RTOS_CMSIS_RTX == 1) #include "cmsis_os2.h" @@ -110,26 +111,6 @@ /*************************************************************************************************/ /*! - * \brief Lock task scheduling. - */ -/*************************************************************************************************/ -uint32_t WsfTaskLock(void) -{ - return PalEnterCs(); -} - -/*************************************************************************************************/ -/*! - * \brief Unock task scheduling. - */ -/*************************************************************************************************/ -void WsfTaskUnlock(uint32_t lock) -{ - PalExitCs(lock); -} - -/*************************************************************************************************/ -/*! * \brief Set an event for an event handler. * * \param handlerId Handler ID. @@ -147,6 +128,7 @@ uint32_t lock = WSF_CS_ENTER(); wsfOs.task.handlerEventMask[WSF_HANDLER_FROM_ID(handlerId)] |= event; wsfOs.task.taskEventMask |= WSF_HANDLER_EVENT; + power_mode_request(POWER_UNIT_OS, POWER_MODE_ACTIVE); WSF_CS_EXIT(lock); /* set event in OS */ @@ -169,6 +151,7 @@ uint32_t lock = WSF_CS_ENTER(); wsfOs.task.taskEventMask |= event; + power_mode_request(POWER_UNIT_OS, POWER_MODE_ACTIVE); WSF_CS_EXIT(lock); /* set event in OS */ @@ -250,7 +233,7 @@ { wsfOsTask_t *pTask; void *pMsg; - wsfTimer_t *pTimer; + mk_timer_t *timer_ptr; wsfEventMask_t eventMask; wsfTaskEvent_t taskEventMask; wsfHandlerId_t handlerId; @@ -264,6 +247,7 @@ uint32_t lock = WSF_CS_ENTER(); taskEventMask = pTask->taskEventMask; pTask->taskEventMask = 0; + power_mode_clear(POWER_UNIT_OS); WSF_CS_EXIT(lock); if (taskEventMask & WSF_MSG_QUEUE_EVENT) @@ -281,11 +265,12 @@ if (taskEventMask & WSF_TIMER_EVENT) { /* service timers */ - while ((pTimer = WsfTimerServiceExpired(0)) != NULL) + while ((timer_ptr = mk_timer_list_pick_expired()) != NULL) { - WSF_ASSERT(pTimer->handlerId < WSF_MAX_HANDLERS); - WSF_OS_SET_ACTIVE_HANDLER_ID(pTimer->handlerId); - (*pTask->handler[pTimer->handlerId])(0, &pTimer->msg); + WSF_ASSERT(timer_ptr->handlerId < WSF_MAX_HANDLERS); + WSF_OS_SET_ACTIVE_HANDLER_ID(timer_ptr->handlerId); + if (timer_ptr->fast_cb == NULL) + (*pTask->handler[timer_ptr->handlerId])(0, &timer_ptr->msg); } } -- Gitblit v1.9.3