Обновление 23.06.2026

This commit is contained in:
Дарья Бараева 2026-06-23 21:20:33 +03:00
parent 4a41a57e08
commit 68bf8fd28f
2 changed files with 13 additions and 9 deletions

View File

@ -39,6 +39,7 @@ typedef struct {
} can_rx_message_type; } can_rx_message_type;
#define COUNT_TX_HANDLER 3
#define COUNT_QUEUE 4 #define COUNT_QUEUE 4
typedef struct { typedef struct {
@ -54,7 +55,7 @@ typedef struct {
uint8_t CAN_INDEX; uint8_t CAN_INDEX;
osMessageQueueId_t txDataQueueCan; osMessageQueueId_t txDataQueueCan[COUNT_TX_HANDLER];
uint32_t id; uint32_t id;
uint32_t id1; uint32_t id1;
@ -75,7 +76,7 @@ typedef struct {
osMessageQueueId_t rxDataQueue[COUNT_QUEUE]; osMessageQueueId_t rxDataQueue[COUNT_QUEUE];
osMessageQueueId_t rxDataSnifferQueue[COUNT_QUEUE]; osMessageQueueId_t rxDataSnifferQueue[COUNT_QUEUE];
osMutexId_t access[2]; osMutexId_t access[COUNT_TX_HANDLER];
DMA_InitType dmaInitCfg_RX; DMA_InitType dmaInitCfg_RX;
DMA_ChannelCfgType chnCfg_RX; DMA_ChannelCfgType chnCfg_RX;

View File

@ -266,9 +266,10 @@ bool vCanSerialPortFrameDMAInit(
env->reInitOne = true; env->reInitOne = true;
env->txDataQueueCan = osMessageQueueNew(1, 1, NULL); for (uint8_t i = 0; i < COUNT_TX_HANDLER; ++i) {
env->access[0] = osMutexNew(NULL); env->access[i] = osMutexNew(NULL);
env->access[1] = osMutexNew(NULL); env->txDataQueueCan[i] = osMessageQueueNew(1, 1, NULL);
}
vCanSerialPortFrameInitStructure(env, 10, 0); vCanSerialPortFrameInitStructure(env, 10, 0);
@ -424,9 +425,11 @@ bool vCanSerialPortFrameMbInit(
if (!env->reInitOne) { if (!env->reInitOne) {
env->reInitOne = true; env->reInitOne = true;
env->access[0] = osMutexNew(NULL); for (uint8_t i = 0; i < COUNT_TX_HANDLER; ++i) {
env->access[1] = osMutexNew(NULL); env->access[i] = osMutexNew(NULL);
env->txDataQueueCan = osMessageQueueNew(1, 1, NULL); env->txDataQueueCan[i] = osMessageQueueNew(1, 1, NULL);
}
vCanSerialPortFrameInitStructure(env, 10, 0); vCanSerialPortFrameInitStructure(env, 10, 0);
@ -721,7 +724,7 @@ FLEXCAN_ErrorType TransmitCan(tCanSerialPortFrameFlagchip *env, FLEXCAN_TxMsgTyp
if (tTxMsg->bWaitTxCompleted) { if (tTxMsg->bWaitTxCompleted) {
uint8_t u8TxHandler; uint8_t u8TxHandler;
if (osMessageQueueGet(env->txDataQueueCan, &u8TxHandler, NULL, tTxMsg->bWaitTxCompleted) == osOK) { if (osMessageQueueGet(env->txDataQueueCan[tTxMsg->u8TxHandler], &u8TxHandler, NULL, tTxMsg->bWaitTxCompleted) == osOK) {
tRetval = FLEXCAN_ERROR_OK; tRetval = FLEXCAN_ERROR_OK;
} else { } else {
tRetval = FLEXCAN_ERROR_TIMEOUT; tRetval = FLEXCAN_ERROR_TIMEOUT;