226#ifdef HAL_CAN_MODULE_ENABLED
228#ifdef HAL_CAN_LEGACY_MODULE_ENABLED
229#error "The CAN driver cannot be used with its legacy, Please enable only one CAN module at once"
237#define CAN_TIMEOUT_VALUE 10U
238#define CAN_WAKEUP_TIMEOUT_COUNTER 1000000U
299#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
317 if (hcan->MspInitCallback == NULL)
323 hcan->MspInitCallback(hcan);
335 SET_BIT(hcan->
Instance->MCR, CAN_MCR_INRQ);
341 while ((hcan->
Instance->MSR & CAN_MSR_INAK) == 0U)
356 CLEAR_BIT(hcan->
Instance->MCR, CAN_MCR_SLEEP);
362 while ((hcan->
Instance->MSR & CAN_MSR_SLAK) != 0U)
379 SET_BIT(hcan->
Instance->MCR, CAN_MCR_TTCM);
383 CLEAR_BIT(hcan->
Instance->MCR, CAN_MCR_TTCM);
389 SET_BIT(hcan->
Instance->MCR, CAN_MCR_ABOM);
393 CLEAR_BIT(hcan->
Instance->MCR, CAN_MCR_ABOM);
399 SET_BIT(hcan->
Instance->MCR, CAN_MCR_AWUM);
403 CLEAR_BIT(hcan->
Instance->MCR, CAN_MCR_AWUM);
409 CLEAR_BIT(hcan->
Instance->MCR, CAN_MCR_NART);
413 SET_BIT(hcan->
Instance->MCR, CAN_MCR_NART);
419 SET_BIT(hcan->
Instance->MCR, CAN_MCR_RFLM);
423 CLEAR_BIT(hcan->
Instance->MCR, CAN_MCR_RFLM);
429 SET_BIT(hcan->
Instance->MCR, CAN_MCR_TXFP);
433 CLEAR_BIT(hcan->
Instance->MCR, CAN_MCR_TXFP);
474#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
475 if (hcan->MspDeInitCallback == NULL)
481 hcan->MspDeInitCallback(hcan);
489 SET_BIT(hcan->
Instance->MCR, CAN_MCR_RESET);
533#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
564 if (pCallback == NULL)
567 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
576 case HAL_CAN_TX_MAILBOX0_COMPLETE_CB_ID :
577 hcan->TxMailbox0CompleteCallback = pCallback;
580 case HAL_CAN_TX_MAILBOX1_COMPLETE_CB_ID :
581 hcan->TxMailbox1CompleteCallback = pCallback;
584 case HAL_CAN_TX_MAILBOX2_COMPLETE_CB_ID :
585 hcan->TxMailbox2CompleteCallback = pCallback;
588 case HAL_CAN_TX_MAILBOX0_ABORT_CB_ID :
589 hcan->TxMailbox0AbortCallback = pCallback;
592 case HAL_CAN_TX_MAILBOX1_ABORT_CB_ID :
593 hcan->TxMailbox1AbortCallback = pCallback;
596 case HAL_CAN_TX_MAILBOX2_ABORT_CB_ID :
597 hcan->TxMailbox2AbortCallback = pCallback;
600 case HAL_CAN_RX_FIFO0_MSG_PENDING_CB_ID :
601 hcan->RxFifo0MsgPendingCallback = pCallback;
604 case HAL_CAN_RX_FIFO0_FULL_CB_ID :
605 hcan->RxFifo0FullCallback = pCallback;
608 case HAL_CAN_RX_FIFO1_MSG_PENDING_CB_ID :
609 hcan->RxFifo1MsgPendingCallback = pCallback;
612 case HAL_CAN_RX_FIFO1_FULL_CB_ID :
613 hcan->RxFifo1FullCallback = pCallback;
616 case HAL_CAN_SLEEP_CB_ID :
617 hcan->SleepCallback = pCallback;
620 case HAL_CAN_WAKEUP_FROM_RX_MSG_CB_ID :
621 hcan->WakeUpFromRxMsgCallback = pCallback;
624 case HAL_CAN_ERROR_CB_ID :
625 hcan->ErrorCallback = pCallback;
628 case HAL_CAN_MSPINIT_CB_ID :
629 hcan->MspInitCallback = pCallback;
632 case HAL_CAN_MSPDEINIT_CB_ID :
633 hcan->MspDeInitCallback = pCallback;
638 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
649 case HAL_CAN_MSPINIT_CB_ID :
650 hcan->MspInitCallback = pCallback;
653 case HAL_CAN_MSPDEINIT_CB_ID :
654 hcan->MspDeInitCallback = pCallback;
659 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
669 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
710 case HAL_CAN_TX_MAILBOX0_COMPLETE_CB_ID :
714 case HAL_CAN_TX_MAILBOX1_COMPLETE_CB_ID :
718 case HAL_CAN_TX_MAILBOX2_COMPLETE_CB_ID :
722 case HAL_CAN_TX_MAILBOX0_ABORT_CB_ID :
726 case HAL_CAN_TX_MAILBOX1_ABORT_CB_ID :
730 case HAL_CAN_TX_MAILBOX2_ABORT_CB_ID :
734 case HAL_CAN_RX_FIFO0_MSG_PENDING_CB_ID :
738 case HAL_CAN_RX_FIFO0_FULL_CB_ID :
742 case HAL_CAN_RX_FIFO1_MSG_PENDING_CB_ID :
746 case HAL_CAN_RX_FIFO1_FULL_CB_ID :
750 case HAL_CAN_SLEEP_CB_ID :
754 case HAL_CAN_WAKEUP_FROM_RX_MSG_CB_ID :
758 case HAL_CAN_ERROR_CB_ID :
762 case HAL_CAN_MSPINIT_CB_ID :
766 case HAL_CAN_MSPDEINIT_CB_ID :
772 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
783 case HAL_CAN_MSPINIT_CB_ID :
787 case HAL_CAN_MSPDEINIT_CB_ID :
793 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
803 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
842 uint32_t filternbrbitpos;
843 CAN_TypeDef *can_ip = hcan->
Instance;
894 SET_BIT(can_ip->FMR, CAN_FMR_FINIT);
901 CLEAR_BIT(can_ip->FMR, CAN_FMR_CAN2SB);
907 CLEAR_BIT(can_ip->FMR, CAN_FMR_CAN2SB);
912 filternbrbitpos = (uint32_t)1 << (sFilterConfig->
FilterBank & 0x1FU);
915 CLEAR_BIT(can_ip->FA1R, filternbrbitpos);
921 CLEAR_BIT(can_ip->FS1R, filternbrbitpos);
925 can_ip->sFilterRegister[sFilterConfig->
FilterBank].FR1 =
927 (0x0000FFFFU & (uint32_t)sFilterConfig->
FilterIdLow);
931 can_ip->sFilterRegister[sFilterConfig->
FilterBank].FR2 =
939 SET_BIT(can_ip->FS1R, filternbrbitpos);
942 can_ip->sFilterRegister[sFilterConfig->
FilterBank].FR1 =
943 ((0x0000FFFFU & (uint32_t)sFilterConfig->
FilterIdHigh) << 16U) |
944 (0x0000FFFFU & (uint32_t)sFilterConfig->
FilterIdLow);
947 can_ip->sFilterRegister[sFilterConfig->
FilterBank].FR2 =
956 CLEAR_BIT(can_ip->FM1R, filternbrbitpos);
961 SET_BIT(can_ip->FM1R, filternbrbitpos);
968 CLEAR_BIT(can_ip->FFA1R, filternbrbitpos);
973 SET_BIT(can_ip->FFA1R, filternbrbitpos);
979 SET_BIT(can_ip->FA1R, filternbrbitpos);
983 CLEAR_BIT(can_ip->FMR, CAN_FMR_FINIT);
1044 CLEAR_BIT(hcan->
Instance->MCR, CAN_MCR_INRQ);
1050 while ((hcan->
Instance->MSR & CAN_MSR_INAK) != 0U)
1093 SET_BIT(hcan->
Instance->MCR, CAN_MCR_INRQ);
1099 while ((hcan->
Instance->MSR & CAN_MSR_INAK) == 0U)
1115 CLEAR_BIT(hcan->
Instance->MCR, CAN_MCR_SLEEP);
1149 SET_BIT(hcan->
Instance->MCR, CAN_MCR_SLEEP);
1174 __IO uint32_t count = 0;
1181 CLEAR_BIT(hcan->
Instance->MCR, CAN_MCR_SLEEP);
1197 }
while ((hcan->
Instance->MSR & CAN_MSR_SLAK) != 0U);
1221 uint32_t status = 0U;
1228 if ((hcan->
Instance->MSR & CAN_MSR_SLAK) != 0U)
1251 const uint8_t aData[], uint32_t *pTxMailbox)
1253 uint32_t transmitmailbox;
1255 uint32_t tsr = READ_REG(hcan->
Instance->TSR);
1275 if (((tsr & CAN_TSR_TME0) != 0U) ||
1276 ((tsr & CAN_TSR_TME1) != 0U) ||
1277 ((tsr & CAN_TSR_TME2) != 0U))
1280 transmitmailbox = (tsr & CAN_TSR_CODE) >> CAN_TSR_CODE_Pos;
1283 *pTxMailbox = (uint32_t)1 << transmitmailbox;
1288 hcan->
Instance->sTxMailBox[transmitmailbox].TIR = ((pHeader->
StdId << CAN_TI0R_STID_Pos) |
1293 hcan->
Instance->sTxMailBox[transmitmailbox].TIR = ((pHeader->
ExtId << CAN_TI0R_EXID_Pos) |
1299 hcan->
Instance->sTxMailBox[transmitmailbox].TDTR = (pHeader->
DLC);
1304 SET_BIT(hcan->
Instance->sTxMailBox[transmitmailbox].TDTR, CAN_TDT0R_TGT);
1308 WRITE_REG(hcan->
Instance->sTxMailBox[transmitmailbox].TDHR,
1309 ((uint32_t)aData[7] << CAN_TDH0R_DATA7_Pos) |
1310 ((uint32_t)aData[6] << CAN_TDH0R_DATA6_Pos) |
1311 ((uint32_t)aData[5] << CAN_TDH0R_DATA5_Pos) |
1312 ((uint32_t)aData[4] << CAN_TDH0R_DATA4_Pos));
1313 WRITE_REG(hcan->
Instance->sTxMailBox[transmitmailbox].TDLR,
1314 ((uint32_t)aData[3] << CAN_TDL0R_DATA3_Pos) |
1315 ((uint32_t)aData[2] << CAN_TDL0R_DATA2_Pos) |
1316 ((uint32_t)aData[1] << CAN_TDL0R_DATA1_Pos) |
1317 ((uint32_t)aData[0] << CAN_TDL0R_DATA0_Pos));
1320 SET_BIT(hcan->
Instance->sTxMailBox[transmitmailbox].TIR, CAN_TI0R_TXRQ);
1364 SET_BIT(hcan->
Instance->TSR, CAN_TSR_ABRQ0);
1371 SET_BIT(hcan->
Instance->TSR, CAN_TSR_ABRQ1);
1378 SET_BIT(hcan->
Instance->TSR, CAN_TSR_ABRQ2);
1401 uint32_t freelevel = 0U;
1408 if ((hcan->
Instance->TSR & CAN_TSR_TME0) != 0U)
1414 if ((hcan->
Instance->TSR & CAN_TSR_TME1) != 0U)
1420 if ((hcan->
Instance->TSR & CAN_TSR_TME2) != 0U)
1444 uint32_t status = 0U;
1454 if ((hcan->
Instance->TSR & (TxMailboxes << CAN_TSR_TME0_Pos)) != (TxMailboxes << CAN_TSR_TME0_Pos))
1476 uint32_t timestamp = 0U;
1477 uint32_t transmitmailbox;
1487 transmitmailbox = POSITION_VAL(TxMailbox);
1490 timestamp = (hcan->
Instance->sTxMailBox[transmitmailbox].TDTR & CAN_TDT0R_TIME) >> CAN_TDT0R_TIME_Pos;
1522 if ((hcan->
Instance->RF0R & CAN_RF0R_FMP0) == 0U)
1533 if ((hcan->
Instance->RF1R & CAN_RF1R_FMP1) == 0U)
1543 pHeader->
IDE = CAN_RI0R_IDE & hcan->
Instance->sFIFOMailBox[RxFifo].RIR;
1546 pHeader->
StdId = (CAN_RI0R_STID & hcan->
Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_TI0R_STID_Pos;
1550 pHeader->
ExtId = ((CAN_RI0R_EXID | CAN_RI0R_STID) &
1551 hcan->
Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_EXID_Pos;
1553 pHeader->
RTR = (CAN_RI0R_RTR & hcan->
Instance->sFIFOMailBox[RxFifo].RIR);
1554 if (((CAN_RDT0R_DLC & hcan->
Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_DLC_Pos) >= 8U)
1561 pHeader->
DLC = (CAN_RDT0R_DLC & hcan->
Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_DLC_Pos;
1564 pHeader->
Timestamp = (CAN_RDT0R_TIME & hcan->
Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_TIME_Pos;
1567 aData[0] = (uint8_t)((CAN_RDL0R_DATA0 & hcan->
Instance->sFIFOMailBox[RxFifo].RDLR) >> CAN_RDL0R_DATA0_Pos);
1568 aData[1] = (uint8_t)((CAN_RDL0R_DATA1 & hcan->
Instance->sFIFOMailBox[RxFifo].RDLR) >> CAN_RDL0R_DATA1_Pos);
1569 aData[2] = (uint8_t)((CAN_RDL0R_DATA2 & hcan->
Instance->sFIFOMailBox[RxFifo].RDLR) >> CAN_RDL0R_DATA2_Pos);
1570 aData[3] = (uint8_t)((CAN_RDL0R_DATA3 & hcan->
Instance->sFIFOMailBox[RxFifo].RDLR) >> CAN_RDL0R_DATA3_Pos);
1571 aData[4] = (uint8_t)((CAN_RDH0R_DATA4 & hcan->
Instance->sFIFOMailBox[RxFifo].RDHR) >> CAN_RDH0R_DATA4_Pos);
1572 aData[5] = (uint8_t)((CAN_RDH0R_DATA5 & hcan->
Instance->sFIFOMailBox[RxFifo].RDHR) >> CAN_RDH0R_DATA5_Pos);
1573 aData[6] = (uint8_t)((CAN_RDH0R_DATA6 & hcan->
Instance->sFIFOMailBox[RxFifo].RDHR) >> CAN_RDH0R_DATA6_Pos);
1574 aData[7] = (uint8_t)((CAN_RDH0R_DATA7 & hcan->
Instance->sFIFOMailBox[RxFifo].RDHR) >> CAN_RDH0R_DATA7_Pos);
1580 SET_BIT(hcan->
Instance->RF0R, CAN_RF0R_RFOM0);
1585 SET_BIT(hcan->
Instance->RF1R, CAN_RF1R_RFOM1);
1610 uint32_t filllevel = 0U;
1621 filllevel = hcan->
Instance->RF0R & CAN_RF0R_FMP0;
1625 filllevel = hcan->
Instance->RF1R & CAN_RF1R_FMP1;
1728 uint32_t interrupts = READ_REG(hcan->
Instance->IER);
1729 uint32_t msrflags = READ_REG(hcan->
Instance->MSR);
1730 uint32_t tsrflags = READ_REG(hcan->
Instance->TSR);
1731 uint32_t rf0rflags = READ_REG(hcan->
Instance->RF0R);
1732 uint32_t rf1rflags = READ_REG(hcan->
Instance->RF1R);
1733 uint32_t esrflags = READ_REG(hcan->
Instance->ESR);
1739 if ((tsrflags & CAN_TSR_RQCP0) != 0U)
1744 if ((tsrflags & CAN_TSR_TXOK0) != 0U)
1747#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
1749 hcan->TxMailbox0CompleteCallback(hcan);
1757 if ((tsrflags & CAN_TSR_ALST0) != 0U)
1762 else if ((tsrflags & CAN_TSR_TERR0) != 0U)
1770#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
1772 hcan->TxMailbox0AbortCallback(hcan);
1782 if ((tsrflags & CAN_TSR_RQCP1) != 0U)
1787 if ((tsrflags & CAN_TSR_TXOK1) != 0U)
1790#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
1792 hcan->TxMailbox1CompleteCallback(hcan);
1800 if ((tsrflags & CAN_TSR_ALST1) != 0U)
1805 else if ((tsrflags & CAN_TSR_TERR1) != 0U)
1813#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
1815 hcan->TxMailbox1AbortCallback(hcan);
1825 if ((tsrflags & CAN_TSR_RQCP2) != 0U)
1830 if ((tsrflags & CAN_TSR_TXOK2) != 0U)
1833#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
1835 hcan->TxMailbox2CompleteCallback(hcan);
1843 if ((tsrflags & CAN_TSR_ALST2) != 0U)
1848 else if ((tsrflags & CAN_TSR_TERR2) != 0U)
1856#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
1858 hcan->TxMailbox2AbortCallback(hcan);
1871 if ((rf0rflags & CAN_RF0R_FOVR0) != 0U)
1884 if ((rf0rflags & CAN_RF0R_FULL0) != 0U)
1890#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
1892 hcan->RxFifo0FullCallback(hcan);
1904 if ((hcan->
Instance->RF0R & CAN_RF0R_FMP0) != 0U)
1907#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
1909 hcan->RxFifo0MsgPendingCallback(hcan);
1920 if ((rf1rflags & CAN_RF1R_FOVR1) != 0U)
1933 if ((rf1rflags & CAN_RF1R_FULL1) != 0U)
1939#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
1941 hcan->RxFifo1FullCallback(hcan);
1953 if ((hcan->
Instance->RF1R & CAN_RF1R_FMP1) != 0U)
1956#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
1958 hcan->RxFifo1MsgPendingCallback(hcan);
1969 if ((msrflags & CAN_MSR_SLAKI) != 0U)
1975#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
1977 hcan->SleepCallback(hcan);
1988 if ((msrflags & CAN_MSR_WKUI) != 0U)
1994#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
1996 hcan->WakeUpFromRxMsgCallback(hcan);
2007 if ((msrflags & CAN_MSR_ERRI) != 0U)
2011 ((esrflags & CAN_ESR_EWGF) != 0U))
2021 ((esrflags & CAN_ESR_EPVF) != 0U))
2031 ((esrflags & CAN_ESR_BOFF) != 0U))
2041 ((esrflags & CAN_ESR_LEC) != 0U))
2043 switch (esrflags & CAN_ESR_LEC)
2045 case (CAN_ESR_LEC_0):
2049 case (CAN_ESR_LEC_1):
2053 case (CAN_ESR_LEC_1 | CAN_ESR_LEC_0):
2057 case (CAN_ESR_LEC_2):
2061 case (CAN_ESR_LEC_2 | CAN_ESR_LEC_0):
2065 case (CAN_ESR_LEC_2 | CAN_ESR_LEC_1):
2074 CLEAR_BIT(hcan->
Instance->ESR, CAN_ESR_LEC);
2089#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
2091 hcan->ErrorCallback(hcan);
2384 if ((hcan->
Instance->MSR & CAN_MSR_SLAK) != 0U)
2390 else if ((hcan->
Instance->MCR & CAN_MCR_SLEEP) != 0U)
#define HAL_CAN_ERROR_TX_TERR1
#define HAL_CAN_ERROR_FOR
#define HAL_CAN_ERROR_TX_ALST2
#define HAL_CAN_ERROR_TIMEOUT
#define HAL_CAN_ERROR_RX_FOV1
#define HAL_CAN_ERROR_STF
#define HAL_CAN_ERROR_TX_ALST1
#define HAL_CAN_ERROR_TX_TERR2
#define HAL_CAN_ERROR_TX_ALST0
#define HAL_CAN_ERROR_NOT_READY
#define HAL_CAN_ERROR_NOT_INITIALIZED
#define HAL_CAN_ERROR_NONE
#define HAL_CAN_ERROR_EWG
#define HAL_CAN_ERROR_TX_TERR0
#define HAL_CAN_ERROR_CRC
#define HAL_CAN_ERROR_NOT_STARTED
#define HAL_CAN_ERROR_PARAM
#define HAL_CAN_ERROR_EPV
#define HAL_CAN_ERROR_RX_FOV0
#define HAL_CAN_ERROR_BOF
#define HAL_CAN_ERROR_ACK
HAL_StatusTypeDef HAL_CAN_DeInit(CAN_HandleTypeDef *hcan)
Deinitializes the CAN peripheral registers to their default reset values.
void HAL_CAN_MspDeInit(CAN_HandleTypeDef *hcan)
DeInitializes the CAN MSP.
HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef *hcan, CAN_FilterConfTypeDef *sFilterConfig)
HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef *hcan)
Initializes the CAN peripheral according to the specified parameters in the CAN_InitStruct.
void HAL_CAN_MspInit(CAN_HandleTypeDef *hcan)
Initializes the CAN MSP.
void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan)
Error CAN callback.
void HAL_CAN_IRQHandler(CAN_HandleTypeDef *hcan)
Handles CAN interrupt request.
HAL_StatusTypeDef HAL_CAN_WakeUp(CAN_HandleTypeDef *hcan)
Wake up from sleep mode. When returning with HAL_OK status from this function, Sleep mode is exited.
HAL_CAN_StateTypeDef HAL_CAN_GetState(CAN_HandleTypeDef *hcan)
uint32_t HAL_CAN_GetTxTimestamp(const CAN_HandleTypeDef *hcan, uint32_t TxMailbox)
Return timestamp of Tx message sent, if time triggered communication mode is enabled.
uint32_t HAL_CAN_GetTxMailboxesFreeLevel(const CAN_HandleTypeDef *hcan)
Return Tx Mailboxes free level: number of free Tx Mailboxes.
HAL_StatusTypeDef HAL_CAN_Start(CAN_HandleTypeDef *hcan)
Start the CAN module.
uint32_t HAL_CAN_IsTxMessagePending(const CAN_HandleTypeDef *hcan, uint32_t TxMailboxes)
Check if a transmission request is pending on the selected Tx Mailboxes.
uint32_t HAL_CAN_IsSleepActive(const CAN_HandleTypeDef *hcan)
Check is sleep mode is active.
uint32_t HAL_CAN_GetRxFifoFillLevel(const CAN_HandleTypeDef *hcan, uint32_t RxFifo)
Return Rx FIFO fill level.
HAL_StatusTypeDef HAL_CAN_AbortTxRequest(CAN_HandleTypeDef *hcan, uint32_t TxMailboxes)
Abort transmission requests.
uint32_t HAL_CAN_GetError(CAN_HandleTypeDef *hcan)
HAL_StatusTypeDef HAL_CAN_Stop(CAN_HandleTypeDef *hcan)
Stop the CAN module and enable access to configuration registers.
HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, const CAN_TxHeaderTypeDef *pHeader, const uint8_t aData[], uint32_t *pTxMailbox)
Add a message to the first free Tx mailbox and activate the corresponding transmission request.
HAL_StatusTypeDef HAL_CAN_RequestSleep(CAN_HandleTypeDef *hcan)
Request the sleep mode (low power) entry. When returning from this function, Sleep mode will be enter...
HAL_StatusTypeDef HAL_CAN_GetRxMessage(CAN_HandleTypeDef *hcan, uint32_t RxFifo, CAN_RxHeaderTypeDef *pHeader, uint8_t aData[])
Get an CAN frame from the Rx FIFO zone into the message RAM.
HAL_StatusTypeDef HAL_CAN_DeactivateNotification(CAN_HandleTypeDef *hcan, uint32_t InactiveITs)
Disable interrupts.
HAL_StatusTypeDef HAL_CAN_ActivateNotification(CAN_HandleTypeDef *hcan, uint32_t ActiveITs)
Enable interrupts.
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 0 message pending callback.
void HAL_CAN_RxFifo1FullCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 1 full callback.
void HAL_CAN_TxMailbox0CompleteCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 0 complete callback.
void HAL_CAN_TxMailbox1AbortCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 1 Cancellation callback.
void HAL_CAN_WakeUpFromRxMsgCallback(CAN_HandleTypeDef *hcan)
WakeUp from Rx message callback.
void HAL_CAN_TxMailbox1CompleteCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 1 complete callback.
void HAL_CAN_RxFifo0FullCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 0 full callback.
void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 2 complete callback.
void HAL_CAN_SleepCallback(CAN_HandleTypeDef *hcan)
Sleep callback.
void HAL_CAN_TxMailbox2AbortCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 2 Cancellation callback.
void HAL_CAN_TxMailbox0AbortCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 0 Cancellation callback.
void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 1 message pending callback.
HAL_StatusTypeDef HAL_CAN_ResetError(CAN_HandleTypeDef *hcan)
Reset the CAN error code.
#define __HAL_CAN_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the specified CAN pending flag.
#define __HAL_CAN_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disable the specified CAN interrupts.
#define __HAL_CAN_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable the specified CAN interrupts.
HAL_CAN_StateTypeDef
HAL State structures definition.
@ HAL_CAN_STATE_LISTENING
@ HAL_CAN_STATE_SLEEP_ACTIVE
@ HAL_CAN_STATE_SLEEP_PENDING
#define CAN_IT_RX_FIFO1_FULL
#define CAN_IT_RX_FIFO0_MSG_PENDING
#define CAN_IT_ERROR_WARNING
#define CAN_IT_ERROR_PASSIVE
#define CAN_IT_RX_FIFO0_OVERRUN
#define CAN_IT_RX_FIFO1_MSG_PENDING
#define CAN_IT_RX_FIFO1_OVERRUN
#define CAN_IT_LAST_ERROR_CODE
#define CAN_IT_RX_FIFO0_FULL
#define CAN_IT_TX_MAILBOX_EMPTY
#define CAN_TIMEOUT_VALUE
#define CAN_WAKEUP_TIMEOUT_COUNTER
#define IS_CAN_FILTER_BANK_DUAL(BANK)
#define IS_CAN_FILTER_FIFO(FIFO)
#define IS_CAN_TX_MAILBOX_LIST(TRANSMITMAILBOX)
#define IS_CAN_MODE(MODE)
#define IS_CAN_EXTID(EXTID)
#define IS_CAN_RX_FIFO(FIFO)
#define IS_CAN_FILTER_ID_HALFWORD(HALFWORD)
#define IS_CAN_IDTYPE(IDTYPE)
#define IS_CAN_PRESCALER(PRESCALER)
#define IS_CAN_FILTER_MODE(MODE)
#define IS_CAN_TX_MAILBOX(TRANSMITMAILBOX)
#define IS_CAN_STDID(STDID)
#define IS_CAN_FILTER_ACTIVATION(ACTIVATION)
#define IS_CAN_FILTER_BANK_SINGLE(BANK)
#define IS_CAN_FILTER_SCALE(SCALE)
#define CAN_FILTER_ENABLE
#define CAN_FILTERMODE_IDMASK
#define CAN_FILTERSCALE_16BIT
#define CAN_FILTERSCALE_32BIT
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition
CAN filter configuration structure definition.
uint32_t FilterActivation
uint32_t FilterMaskIdHigh
uint32_t FilterFIFOAssignment
uint32_t SlaveStartFilterBank
CAN handle Structure definition.
__IO HAL_CAN_StateTypeDef State
FunctionalState AutoBusOff
FunctionalState ReceiveFifoLocked
FunctionalState TimeTriggeredMode
FunctionalState AutoRetransmission
FunctionalState AutoWakeUp
FunctionalState TransmitFifoPriority