From fce6e672017e53c7cf0cd26abf692f6d8734218f Mon Sep 17 00:00:00 2001 From: cfif Date: Thu, 23 Jul 2026 15:03:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B?= =?UTF-8?q?=D0=B5=20IO=20=D0=B8=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D1=81=D1=82=D0=B5=D0=BA=D0=B8=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B4=D0=B0=D1=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inc/CanSerialPortFrameXCP.h | 9 ++++++++- Src/CanSerialPortFrameXCP.c | 10 ++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Inc/CanSerialPortFrameXCP.h b/Inc/CanSerialPortFrameXCP.h index ed08429..f242901 100644 --- a/Inc/CanSerialPortFrameXCP.h +++ b/Inc/CanSerialPortFrameXCP.h @@ -651,7 +651,14 @@ typedef struct { uint16_t bufWriteFlashCount; uint32_t bufWriteFlashAdr; - tStaticThreadBlock(384) T_can_Listener_XCP; + struct { + osThreadId_t id; + uint32_t stack[384]; + StaticTask_t controlBlock; + osThreadAttr_t attr; + } thread_Listener_XCP; + +// tStaticThreadBlock(384) T_can_Listener_XCP; // tStaticThreadBlock(512) T_can_Listener_Dto_Stim_XCP; // tStaticThreadBlock(512) T_can_Listener_Dto_Daq_10_XCP; // tStaticThreadBlock(512) T_can_Listener_Dto_Daq_100_XCP; diff --git a/Src/CanSerialPortFrameXCP.c b/Src/CanSerialPortFrameXCP.c index 2c94257..fea907a 100644 --- a/Src/CanSerialPortFrameXCP.c +++ b/Src/CanSerialPortFrameXCP.c @@ -134,7 +134,9 @@ void CanSerialPortFrameXcpInit( env->access = osMutexNew(NULL); - InitThreadBlock(env->T_can_Listener_XCP, "CanListenerXCP", osPriorityNormal); +// InitThreadBlock(env->T_can_Listener_XCP, "CanListenerXCP", osPriorityNormal); + InitThreadAtrStatic(&env->thread_Listener_XCP.attr, "CanListenerXCP", env->thread_Listener_XCP.controlBlock, env->thread_Listener_XCP.stack, + osPriorityNormal); } static void FREE_DAQ(tCanSerialPortFrameXCP *env) { @@ -1904,6 +1906,10 @@ _Noreturn void CanXcpProcessing_ListenerTask(tCanSerialPortFrameXCP *env) { } void CanXcpProcessing_Listener_Start(tCanSerialPortFrameXCP *env) { - ThreadBlock_Start(env->T_can_Listener_XCP, env, CanXcpProcessing_ListenerTask); +// ThreadBlock_Start(env->T_can_Listener_XCP, env, CanXcpProcessing_ListenerTask); + if (!env->thread_Listener_XCP.id) { + env->thread_Listener_XCP.id = osThreadNew((osThreadFunc_t) (CanXcpProcessing_ListenerTask), (void *) (env), &env->thread_Listener_XCP.attr); + } + // CanXcpProcessing_Service_Start(env); }