From 110d17df7471cabd9997c4e8a5aabfceb457ecbf Mon Sep 17 00:00:00 2001 From: cfif Date: Tue, 30 Jun 2026 11:58:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8=2030.06.2026?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inc/PwmCaptureFlagchip.h | 4 ++++ Src/PwmCaptureFlagchip.c | 23 ++++++++++++----------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Inc/PwmCaptureFlagchip.h b/Inc/PwmCaptureFlagchip.h index 7439aa5..bd419ed 100644 --- a/Inc/PwmCaptureFlagchip.h +++ b/Inc/PwmCaptureFlagchip.h @@ -24,6 +24,10 @@ typedef struct { osMessageQueueId_t q_u32PeriodActiveTime; + uint32_t timeout; + uint8_t percent; + tPwmCaptureData data; + } tPwmCaptureFlagchip; diff --git a/Src/PwmCaptureFlagchip.c b/Src/PwmCaptureFlagchip.c index ff18e24..0081fc3 100644 --- a/Src/PwmCaptureFlagchip.c +++ b/Src/PwmCaptureFlagchip.c @@ -74,26 +74,27 @@ void PWM_Capture_Initial( static uint8_t vGetPwm(tPwmCaptureFlagchip *env) { - uint8_t percent = 0; - - tPwmCaptureData data; - - osStatus_t cPeriodActiveTime = osMessageQueueGet(env->q_u32PeriodActiveTime, &data, 0, 100); - cPeriodActiveTime = osMessageQueueGet(env->q_u32PeriodActiveTime, &data, 0, 100); + osStatus_t cPeriodActiveTime = osMessageQueueGet(env->q_u32PeriodActiveTime, &env->data, 0, 0); if (cPeriodActiveTime == osOK) { - percent = data.ActiveTime * 100 / data.PeriodTime; + env->timeout = SystemGetMs() + 1000; + + env->percent = env->data.ActiveTime * 100 / env->data.PeriodTime; // Инверсия для отображения - percent = 100 - percent; + env->percent = 100 - env->percent; + } else { + if (env->timeout < SystemGetMs()) { + env->percent = 0; + } } // PWM - Отключен - if (percent == 100) { - percent = 0; + if (env->percent == 100) { + env->percent = 0; } - return percent; + return env->percent; } tPwmCaptureIO vPwmCaptureGetIo(tPwmCaptureFlagchip *env) {