From 99c79f4c5b883ff305b9f88b3281dc82c59247e3 Mon Sep 17 00:00:00 2001 From: darya Date: Fri, 5 Jun 2026 09:38:47 +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=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=2005.06.2026?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/CanSerialPortFrame.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/Src/CanSerialPortFrame.c b/Src/CanSerialPortFrame.c index 86714f2..30a8f6a 100644 --- a/Src/CanSerialPortFrame.c +++ b/Src/CanSerialPortFrame.c @@ -118,14 +118,13 @@ bool vCanSerialPortFrameDMAInit( env->DMA_ErrorCallback = DMA_ErrorCallback; - env->access = osMutexNew(NULL); //начало-----------------------------------DMA-RX------------------------------------------------------------------- //начало-----------------------------------DMA-RX------------------------------------------------------------------- //начало-----------------------------------DMA-RX------------------------------------------------------------------- - uint32_t u32TargetAddr = (uint32_t) (DMA_BUF_RX); + uint32_t u32TargetAddr = (uint32_t)(DMA_BUF_RX); env->chnCfg_RX.pSrcBuffer = &(CANx->RAM[0]); env->chnCfg_RX.pDestBuffer = (void *) (u32TargetAddr); @@ -442,8 +441,7 @@ bool vCanSerialPortFrameMbInit( } -bool vCanSerialPortSetMaskCount(tCanSerialPortFrameFlagchip *env, uint8_t maskCount) -{ +bool vCanSerialPortSetMaskCount(tCanSerialPortFrameFlagchip *env, uint8_t maskCount) { FLEXCAN_ErrorType tRetVal; uint8_t i; @@ -460,14 +458,14 @@ bool vCanSerialPortSetMaskCount(tCanSerialPortFrameFlagchip *env, uint8_t maskCo // Обновляем список фильтров в рабочем буфере (первые maskCount элементов) for (i = 0; i < maskCount; i++) { - env->pRxMbFilterList[i].eRxFrameType = env->IdHardSoftFilter_RX[i].eRxFrameType; - env->pRxMbFilterList[i].u32RxCanId = env->IdHardSoftFilter_RX[i].u32RxCanId; + env->pRxMbFilterList[i].eRxFrameType = env->IdHardSoftFilter_RX[i].eRxFrameType; + env->pRxMbFilterList[i].u32RxCanId = env->IdHardSoftFilter_RX[i].u32RxCanId; env->pRxMbFilterList[i].u32RxCanIdMask = env->IdHardSoftFilter_RX[i].u32RxCanIdMask; } for (i = maskCount; i < 32; i++) { - env->pRxMbFilterList[i].eRxFrameType = env->IdHardSoftFilter_RX[0].eRxFrameType; - env->pRxMbFilterList[i].u32RxCanId = env->IdHardSoftFilter_RX[0].u32RxCanId; + env->pRxMbFilterList[i].eRxFrameType = env->IdHardSoftFilter_RX[0].eRxFrameType; + env->pRxMbFilterList[i].u32RxCanId = env->IdHardSoftFilter_RX[0].u32RxCanId; env->pRxMbFilterList[i].u32RxCanIdMask = env->IdHardSoftFilter_RX[0].u32RxCanIdMask; } @@ -552,7 +550,7 @@ void CanSerialPortFrameIrqRxProcessingNO_DMA(tCanSerialPortFrameFlagchip *env, F filter_index = env->IdHardSoftFilter_RX[i].filter; pMsg->filter_index = filter_index; - if (i> 2) { + if (i > 2) { asm("nop"); } @@ -562,6 +560,7 @@ void CanSerialPortFrameIrqRxProcessingNO_DMA(tCanSerialPortFrameFlagchip *env, F // Если ID найден или фильтров нет if (filter_index != 0xFF || count == 0) { + memcpy(pMsg->data, pRxCfg->aData, dlc); CanSerialPortFrameAddDataQueue(env, pMsg, filter_index != 0xFF ? filter_index : 0); } @@ -571,7 +570,7 @@ void CanSerialPortFrameIrqRxProcessingNO_DMA(tCanSerialPortFrameFlagchip *env, F void CanSerialPortFrameIrqRxProcessing(tCanSerialPortFrameFlagchip *env, uint32_t *pBuf) { // message buffer 1th word - uint32_t u32TempAddr = (uint32_t) FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 0U); + uint32_t u32TempAddr = (uint32_t)FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 0U); uint32_t dlc = FLEXCAN_MB_DLC_GET(u32TempAddr); env->rx_message_struct.dlc = FLEXCAN_DlcToDataLen(dlc); @@ -579,7 +578,7 @@ void CanSerialPortFrameIrqRxProcessing(tCanSerialPortFrameFlagchip *env, uint32_ env->rx_message_struct.id_type = FLEXCAN_MB_IDE_GET(u32TempAddr); // message buffer 2th word - u32TempAddr = (uint32_t) FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 4U); + u32TempAddr = (uint32_t)FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 4U); if (env->rx_message_struct.id_type == FLEXCAN_ID_STD) { env->rx_message_struct.standard_id = FLEXCAN_MB_STDID_GET(u32TempAddr); @@ -620,8 +619,8 @@ void CanSerialPortFrameIrqRxProcessing(tCanSerialPortFrameFlagchip *env, uint32_ if (index != 0xFF) { // message buffer 3th word - uint32_t *pSrc = (uint32_t *) FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 8U); - uint32_t *pDest = (uint32_t *) &env->rx_message_struct.data[0]; + uint32_t *pSrc = (uint32_t * )FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 8U); + uint32_t *pDest = (uint32_t * ) & env->rx_message_struct.data[0]; uint32_t u32WordLen = env->rx_message_struct.dlc / 4U + (env->rx_message_struct.dlc % 4U > 0U ? 1U : 0U); @@ -635,8 +634,8 @@ void CanSerialPortFrameIrqRxProcessing(tCanSerialPortFrameFlagchip *env, uint32_ if (env->CountHardSoftFilter_RX == 0) { // message buffer 3th word - uint32_t *pSrc = (uint32_t *) FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 8U); - uint32_t *pDest = (uint32_t *) &env->rx_message_struct.data[0]; + uint32_t *pSrc = (uint32_t * )FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 8U); + uint32_t *pDest = (uint32_t * ) & env->rx_message_struct.data[0]; uint32_t u32WordLen = env->rx_message_struct.dlc / 4U + (env->rx_message_struct.dlc % 4U > 0U ? 1U : 0U);