Обновление 23.06.2026

This commit is contained in:
Дарья Бараева 2026-06-23 09:04:21 +03:00
parent 6f117f0f13
commit eb5628c998
2 changed files with 32 additions and 13 deletions

View File

@ -54,6 +54,8 @@ typedef struct {
uint8_t CAN_INDEX;
osMessageQueueId_t txDataQueueCan;
uint32_t id;
uint32_t id1;
FLEXCAN_IdType canTypeFrame;

View File

@ -118,6 +118,7 @@ bool vCanSerialPortFrameDMAInit(
env->DMA_ErrorCallback = DMA_ErrorCallback;
env->txDataQueueCan = osMessageQueueNew(1, 1, NULL);
env->access = osMutexNew(NULL);
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
@ -325,7 +326,7 @@ bool vCanSerialPortFrameMbInit(
// env->DMA_ErrorCallback = DMA_ErrorCallback;
env->access = osMutexNew(NULL);
env->txDataQueueCan = osMessageQueueNew(1, 1, NULL);
//начало------------------------------------CAN---------------------------------------------------------------------
//начало------------------------------------CAN---------------------------------------------------------------------
@ -704,6 +705,32 @@ vCanSerialPortFrameReceive(tCanSerialPortFrameFlagchip *env, uint8_t idFilter, u
// : 0;
//}
FLEXCAN_ErrorType TransmitCan(tCanSerialPortFrameFlagchip *env, FLEXCAN_TxMsgType *tTxMsg) {
FLEXCAN_ErrorType tRetval = FLEXCAN_TransmitData(env->CAN_INDEX, tTxMsg);
if (tRetval != FLEXCAN_ERROR_OK) {
FLEXCAN_TransmitAbort(env->CAN_INDEX, tTxMsg->u8TxHandler);
} else {
if (tTxMsg->bWaitTxCompleted) {
uint8_t u8TxHandler;
if (osMessageQueueGet(env->txDataQueueCan, &u8TxHandler, NULL, tTxMsg->bWaitTxCompleted) == osOK) {
tRetval = FLEXCAN_ERROR_OK;
} else {
tRetval = FLEXCAN_ERROR_TIMEOUT;
}
}
FLEXCAN_TransmitProcess(env->CAN_INDEX, tTxMsg->u8TxHandler);
}
return tRetval;
}
uint16_t vCanSerialPortFrameTransmit(tCanSerialPortFrameFlagchip *env, uint8_t *data, uint16_t size, uint32_t adr,
uint8_t canType, uint32_t timeout) {
@ -739,12 +766,7 @@ uint16_t vCanSerialPortFrameTransmit(tCanSerialPortFrameFlagchip *env, uint8_t *
FCFUNC_FcOwnMemcpy(tTxMsg.aData, &data[len], 8, NULL);
len += 8;
tRetval = FLEXCAN_TransmitData(env->CAN_INDEX, &tTxMsg);
if (tRetval != FLEXCAN_ERROR_OK) {
FLEXCAN_TransmitAbort(env->CAN_INDEX, tTxMsg.u8TxHandler);
} else {
FLEXCAN_TransmitProcess(env->CAN_INDEX, tTxMsg.u8TxHandler);
}
tRetval = TransmitCan(env, &tTxMsg);
sent += 8;
size -= 8;
@ -755,12 +777,7 @@ uint16_t vCanSerialPortFrameTransmit(tCanSerialPortFrameFlagchip *env, uint8_t *
FCFUNC_FcOwnMemcpy(tTxMsg.aData, &data[len], tailSize, NULL);
tRetval = FLEXCAN_TransmitData(env->CAN_INDEX, &tTxMsg);
if (tRetval != FLEXCAN_ERROR_OK) {
FLEXCAN_TransmitAbort(env->CAN_INDEX, tTxMsg.u8TxHandler);
} else {
FLEXCAN_TransmitProcess(env->CAN_INDEX, tTxMsg.u8TxHandler);
}
tRetval = TransmitCan(env, &tTxMsg);
sent += tailSize;
size -= tailSize;