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 298 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 340 while ((hcan->
Instance->MSR & CAN_MSR_SLAK) != 0U)
342 if ((
HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE)
345 hcan->
ErrorCode |= HAL_CAN_ERROR_TIMEOUT;
355 SET_BIT(hcan->
Instance->MCR, CAN_MCR_INRQ);
361 while ((hcan->
Instance->MSR & CAN_MSR_INAK) == 0U)
363 if ((
HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE)
366 hcan->
ErrorCode |= HAL_CAN_ERROR_TIMEOUT;
378 SET_BIT(hcan->
Instance->MCR, CAN_MCR_TTCM);
388 SET_BIT(hcan->
Instance->MCR, CAN_MCR_ABOM);
398 SET_BIT(hcan->
Instance->MCR, CAN_MCR_AWUM);
412 SET_BIT(hcan->
Instance->MCR, CAN_MCR_NART);
418 SET_BIT(hcan->
Instance->MCR, CAN_MCR_RFLM);
428 SET_BIT(hcan->
Instance->MCR, CAN_MCR_TXFP);
473 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 488 SET_BIT(hcan->
Instance->MCR, CAN_MCR_RESET);
532 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 560 HAL_StatusTypeDef status =
HAL_OK;
562 if (pCallback == NULL)
565 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
636 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
657 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
667 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
702 HAL_StatusTypeDef status =
HAL_OK;
770 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
791 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
801 hcan->
ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
840 uint32_t filternbrbitpos;
841 CAN_TypeDef *can_ip = hcan->
Instance;
873 SET_BIT(can_ip->FMR, CAN_FMR_FINIT);
882 filternbrbitpos = (uint32_t)1 << (sFilterConfig->
FilterBank & 0x1FU);
885 CLEAR_BIT(can_ip->FA1R, filternbrbitpos);
888 if (sFilterConfig->
FilterScale == CAN_FILTERSCALE_16BIT)
891 CLEAR_BIT(can_ip->FS1R, filternbrbitpos);
895 can_ip->sFilterRegister[sFilterConfig->
FilterBank].FR1 =
897 (0x0000FFFFU & (uint32_t)sFilterConfig->
FilterIdLow);
901 can_ip->sFilterRegister[sFilterConfig->
FilterBank].FR2 =
906 if (sFilterConfig->
FilterScale == CAN_FILTERSCALE_32BIT)
909 SET_BIT(can_ip->FS1R, filternbrbitpos);
912 can_ip->sFilterRegister[sFilterConfig->
FilterBank].FR1 =
913 ((0x0000FFFFU & (uint32_t)sFilterConfig->
FilterIdHigh) << 16U) |
914 (0x0000FFFFU & (uint32_t)sFilterConfig->
FilterIdLow);
917 can_ip->sFilterRegister[sFilterConfig->
FilterBank].FR2 =
923 if (sFilterConfig->
FilterMode == CAN_FILTERMODE_IDMASK)
926 CLEAR_BIT(can_ip->FM1R, filternbrbitpos);
931 SET_BIT(can_ip->FM1R, filternbrbitpos);
938 CLEAR_BIT(can_ip->FFA1R, filternbrbitpos);
943 SET_BIT(can_ip->FFA1R, filternbrbitpos);
949 SET_BIT(can_ip->FA1R, filternbrbitpos);
961 hcan->
ErrorCode |= HAL_CAN_ERROR_NOT_INITIALIZED;
1020 while ((hcan->
Instance->MSR & CAN_MSR_INAK) != 0U)
1023 if ((
HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE)
1026 hcan->
ErrorCode |= HAL_CAN_ERROR_TIMEOUT;
1044 hcan->
ErrorCode |= HAL_CAN_ERROR_NOT_READY;
1063 SET_BIT(hcan->
Instance->MCR, CAN_MCR_INRQ);
1069 while ((hcan->
Instance->MSR & CAN_MSR_INAK) == 0U)
1072 if ((
HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE)
1075 hcan->
ErrorCode |= HAL_CAN_ERROR_TIMEOUT;
1096 hcan->
ErrorCode |= HAL_CAN_ERROR_NOT_STARTED;
1119 SET_BIT(hcan->
Instance->MCR, CAN_MCR_SLEEP);
1127 hcan->
ErrorCode |= HAL_CAN_ERROR_NOT_INITIALIZED;
1144 __IO uint32_t count = 0;
1145 uint32_t timeout = 1000000U;
1161 if (count > timeout)
1164 hcan->
ErrorCode |= HAL_CAN_ERROR_TIMEOUT;
1169 while ((hcan->
Instance->MSR & CAN_MSR_SLAK) != 0U);
1177 hcan->
ErrorCode |= HAL_CAN_ERROR_NOT_INITIALIZED;
1193 uint32_t status = 0U;
1200 if ((hcan->
Instance->MSR & CAN_MSR_SLAK) != 0U)
1224 uint32_t transmitmailbox;
1226 uint32_t tsr = READ_REG(hcan->
Instance->TSR);
1232 if (pHeader->
IDE == CAN_ID_STD)
1246 if (((tsr & CAN_TSR_TME0) != 0U) ||
1247 ((tsr & CAN_TSR_TME1) != 0U) ||
1248 ((tsr & CAN_TSR_TME2) != 0U))
1251 transmitmailbox = (tsr & CAN_TSR_CODE) >> CAN_TSR_CODE_Pos;
1254 if (transmitmailbox > 2U)
1257 hcan->
ErrorCode |= HAL_CAN_ERROR_INTERNAL;
1263 *pTxMailbox = (uint32_t)1 << transmitmailbox;
1266 if (pHeader->
IDE == CAN_ID_STD)
1268 hcan->
Instance->sTxMailBox[transmitmailbox].TIR = ((pHeader->
StdId << CAN_TI0R_STID_Pos) |
1273 hcan->
Instance->sTxMailBox[transmitmailbox].TIR = ((pHeader->
ExtId << CAN_TI0R_EXID_Pos) |
1279 hcan->
Instance->sTxMailBox[transmitmailbox].TDTR = (pHeader->
DLC);
1284 SET_BIT(hcan->
Instance->sTxMailBox[transmitmailbox].TDTR, CAN_TDT0R_TGT);
1288 WRITE_REG(hcan->
Instance->sTxMailBox[transmitmailbox].TDHR,
1289 ((uint32_t)aData[7] << CAN_TDH0R_DATA7_Pos) |
1290 ((uint32_t)aData[6] << CAN_TDH0R_DATA6_Pos) |
1291 ((uint32_t)aData[5] << CAN_TDH0R_DATA5_Pos) |
1292 ((uint32_t)aData[4] << CAN_TDH0R_DATA4_Pos));
1293 WRITE_REG(hcan->
Instance->sTxMailBox[transmitmailbox].TDLR,
1294 ((uint32_t)aData[3] << CAN_TDL0R_DATA3_Pos) |
1295 ((uint32_t)aData[2] << CAN_TDL0R_DATA2_Pos) |
1296 ((uint32_t)aData[1] << CAN_TDL0R_DATA1_Pos) |
1297 ((uint32_t)aData[0] << CAN_TDL0R_DATA0_Pos));
1300 SET_BIT(hcan->
Instance->sTxMailBox[transmitmailbox].TIR, CAN_TI0R_TXRQ);
1316 hcan->
ErrorCode |= HAL_CAN_ERROR_NOT_INITIALIZED;
1341 if ((TxMailboxes & CAN_TX_MAILBOX0) != 0U)
1344 SET_BIT(hcan->
Instance->TSR, CAN_TSR_ABRQ0);
1348 if ((TxMailboxes & CAN_TX_MAILBOX1) != 0U)
1351 SET_BIT(hcan->
Instance->TSR, CAN_TSR_ABRQ1);
1355 if ((TxMailboxes & CAN_TX_MAILBOX2) != 0U)
1358 SET_BIT(hcan->
Instance->TSR, CAN_TSR_ABRQ2);
1367 hcan->
ErrorCode |= HAL_CAN_ERROR_NOT_INITIALIZED;
1381 uint32_t freelevel = 0U;
1388 if ((hcan->
Instance->TSR & CAN_TSR_TME0) != 0U)
1394 if ((hcan->
Instance->TSR & CAN_TSR_TME1) != 0U)
1400 if ((hcan->
Instance->TSR & CAN_TSR_TME2) != 0U)
1424 uint32_t status = 0U;
1434 if ((hcan->
Instance->TSR & (TxMailboxes << CAN_TSR_TME0_Pos)) != (TxMailboxes << CAN_TSR_TME0_Pos))
1456 uint32_t timestamp = 0U;
1457 uint32_t transmitmailbox;
1467 transmitmailbox = POSITION_VAL(TxMailbox);
1470 timestamp = (hcan->
Instance->sTxMailBox[transmitmailbox].TDTR & CAN_TDT0R_TIME) >> CAN_TDT0R_TIME_Pos;
1498 if (RxFifo == CAN_RX_FIFO0)
1501 if ((hcan->
Instance->RF0R & CAN_RF0R_FMP0) == 0U)
1512 if ((hcan->
Instance->RF1R & CAN_RF1R_FMP1) == 0U)
1522 pHeader->
IDE = CAN_RI0R_IDE & hcan->
Instance->sFIFOMailBox[RxFifo].RIR;
1523 if (pHeader->
IDE == CAN_ID_STD)
1525 pHeader->
StdId = (CAN_RI0R_STID & hcan->
Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_TI0R_STID_Pos;
1529 pHeader->
ExtId = ((CAN_RI0R_EXID | CAN_RI0R_STID) & hcan->
Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_EXID_Pos;
1531 pHeader->
RTR = (CAN_RI0R_RTR & hcan->
Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_RTR_Pos;
1532 pHeader->
DLC = (CAN_RDT0R_DLC & hcan->
Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_DLC_Pos;
1534 pHeader->
Timestamp = (CAN_RDT0R_TIME & hcan->
Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_TIME_Pos;
1537 aData[0] = (uint8_t)((CAN_RDL0R_DATA0 & hcan->
Instance->sFIFOMailBox[RxFifo].RDLR) >> CAN_RDL0R_DATA0_Pos);
1538 aData[1] = (uint8_t)((CAN_RDL0R_DATA1 & hcan->
Instance->sFIFOMailBox[RxFifo].RDLR) >> CAN_RDL0R_DATA1_Pos);
1539 aData[2] = (uint8_t)((CAN_RDL0R_DATA2 & hcan->
Instance->sFIFOMailBox[RxFifo].RDLR) >> CAN_RDL0R_DATA2_Pos);
1540 aData[3] = (uint8_t)((CAN_RDL0R_DATA3 & hcan->
Instance->sFIFOMailBox[RxFifo].RDLR) >> CAN_RDL0R_DATA3_Pos);
1541 aData[4] = (uint8_t)((CAN_RDH0R_DATA4 & hcan->
Instance->sFIFOMailBox[RxFifo].RDHR) >> CAN_RDH0R_DATA4_Pos);
1542 aData[5] = (uint8_t)((CAN_RDH0R_DATA5 & hcan->
Instance->sFIFOMailBox[RxFifo].RDHR) >> CAN_RDH0R_DATA5_Pos);
1543 aData[6] = (uint8_t)((CAN_RDH0R_DATA6 & hcan->
Instance->sFIFOMailBox[RxFifo].RDHR) >> CAN_RDH0R_DATA6_Pos);
1544 aData[7] = (uint8_t)((CAN_RDH0R_DATA7 & hcan->
Instance->sFIFOMailBox[RxFifo].RDHR) >> CAN_RDH0R_DATA7_Pos);
1547 if (RxFifo == CAN_RX_FIFO0)
1550 SET_BIT(hcan->
Instance->RF0R, CAN_RF0R_RFOM0);
1555 SET_BIT(hcan->
Instance->RF1R, CAN_RF1R_RFOM1);
1564 hcan->
ErrorCode |= HAL_CAN_ERROR_NOT_INITIALIZED;
1580 uint32_t filllevel = 0U;
1589 if (RxFifo == CAN_RX_FIFO0)
1591 filllevel = hcan->
Instance->RF0R & CAN_RF0R_FMP0;
1595 filllevel = hcan->
Instance->RF1R & CAN_RF1R_FMP1;
1642 __HAL_CAN_ENABLE_IT(hcan, ActiveITs);
1650 hcan->
ErrorCode |= HAL_CAN_ERROR_NOT_INITIALIZED;
1675 __HAL_CAN_DISABLE_IT(hcan, InactiveITs);
1683 hcan->
ErrorCode |= HAL_CAN_ERROR_NOT_INITIALIZED;
1697 uint32_t errorcode = HAL_CAN_ERROR_NONE;
1698 uint32_t interrupts = READ_REG(hcan->
Instance->IER);
1699 uint32_t msrflags = READ_REG(hcan->
Instance->MSR);
1700 uint32_t tsrflags = READ_REG(hcan->
Instance->TSR);
1701 uint32_t rf0rflags = READ_REG(hcan->
Instance->RF0R);
1702 uint32_t rf1rflags = READ_REG(hcan->
Instance->RF1R);
1703 uint32_t esrflags = READ_REG(hcan->
Instance->ESR);
1706 if ((interrupts & CAN_IT_TX_MAILBOX_EMPTY) != 0U)
1709 if ((tsrflags & CAN_TSR_RQCP0) != 0U)
1712 __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_RQCP0);
1714 if ((tsrflags & CAN_TSR_TXOK0) != 0U)
1717 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 1727 if ((tsrflags & CAN_TSR_ALST0) != 0U)
1730 errorcode |= HAL_CAN_ERROR_TX_ALST0;
1732 else if ((tsrflags & CAN_TSR_TERR0) != 0U)
1735 errorcode |= HAL_CAN_ERROR_TX_TERR0;
1740 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 1752 if ((tsrflags & CAN_TSR_RQCP1) != 0U)
1755 __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_RQCP1);
1757 if ((tsrflags & CAN_TSR_TXOK1) != 0U)
1760 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 1770 if ((tsrflags & CAN_TSR_ALST1) != 0U)
1773 errorcode |= HAL_CAN_ERROR_TX_ALST1;
1775 else if ((tsrflags & CAN_TSR_TERR1) != 0U)
1778 errorcode |= HAL_CAN_ERROR_TX_TERR1;
1783 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 1795 if ((tsrflags & CAN_TSR_RQCP2) != 0U)
1798 __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_RQCP2);
1800 if ((tsrflags & CAN_TSR_TXOK2) != 0U)
1803 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 1813 if ((tsrflags & CAN_TSR_ALST2) != 0U)
1816 errorcode |= HAL_CAN_ERROR_TX_ALST2;
1818 else if ((tsrflags & CAN_TSR_TERR2) != 0U)
1821 errorcode |= HAL_CAN_ERROR_TX_TERR2;
1826 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 1839 if ((interrupts & CAN_IT_RX_FIFO0_OVERRUN) != 0U)
1841 if ((rf0rflags & CAN_RF0R_FOVR0) != 0U)
1844 errorcode |= HAL_CAN_ERROR_RX_FOV0;
1847 __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_FOV0);
1852 if ((interrupts & CAN_IT_RX_FIFO0_FULL) != 0U)
1854 if ((rf0rflags & CAN_RF0R_FULL0) != 0U)
1857 __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_FF0);
1860 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 1871 if ((interrupts & CAN_IT_RX_FIFO0_MSG_PENDING) != 0U)
1874 if ((hcan->
Instance->RF0R & CAN_RF0R_FMP0) != 0U)
1877 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 1888 if ((interrupts & CAN_IT_RX_FIFO1_OVERRUN) != 0U)
1890 if ((rf1rflags & CAN_RF1R_FOVR1) != 0U)
1893 errorcode |= HAL_CAN_ERROR_RX_FOV1;
1896 __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_FOV1);
1901 if ((interrupts & CAN_IT_RX_FIFO1_FULL) != 0U)
1903 if ((rf1rflags & CAN_RF1R_FULL1) != 0U)
1906 __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_FF1);
1909 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 1920 if ((interrupts & CAN_IT_RX_FIFO1_MSG_PENDING) != 0U)
1923 if ((hcan->
Instance->RF1R & CAN_RF1R_FMP1) != 0U)
1926 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 1937 if ((interrupts & CAN_IT_SLEEP_ACK) != 0U)
1939 if ((msrflags & CAN_MSR_SLAKI) != 0U)
1942 __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_SLAKI);
1945 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 1956 if ((interrupts & CAN_IT_WAKEUP) != 0U)
1958 if ((msrflags & CAN_MSR_WKUI) != 0U)
1961 __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_WKU);
1964 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 1975 if ((interrupts & CAN_IT_ERROR) != 0U)
1977 if ((msrflags & CAN_MSR_ERRI) != 0U)
1980 if (((interrupts & CAN_IT_ERROR_WARNING) != 0U) &&
1981 ((esrflags & CAN_ESR_EWGF) != 0U))
1984 errorcode |= HAL_CAN_ERROR_EWG;
1990 if (((interrupts & CAN_IT_ERROR_PASSIVE) != 0U) &&
1991 ((esrflags & CAN_ESR_EPVF) != 0U))
1994 errorcode |= HAL_CAN_ERROR_EPV;
2000 if (((interrupts & CAN_IT_BUSOFF) != 0U) &&
2001 ((esrflags & CAN_ESR_BOFF) != 0U))
2004 errorcode |= HAL_CAN_ERROR_BOF;
2010 if (((interrupts & CAN_IT_LAST_ERROR_CODE) != 0U) &&
2011 ((esrflags & CAN_ESR_LEC) != 0U))
2013 switch (esrflags & CAN_ESR_LEC)
2015 case (CAN_ESR_LEC_0):
2017 errorcode |= HAL_CAN_ERROR_STF;
2019 case (CAN_ESR_LEC_1):
2021 errorcode |= HAL_CAN_ERROR_FOR;
2023 case (CAN_ESR_LEC_1 | CAN_ESR_LEC_0):
2025 errorcode |= HAL_CAN_ERROR_ACK;
2027 case (CAN_ESR_LEC_2):
2029 errorcode |= HAL_CAN_ERROR_BR;
2031 case (CAN_ESR_LEC_2 | CAN_ESR_LEC_0):
2033 errorcode |= HAL_CAN_ERROR_BD;
2035 case (CAN_ESR_LEC_2 | CAN_ESR_LEC_1):
2037 errorcode |= HAL_CAN_ERROR_CRC;
2049 __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_ERRI);
2053 if (errorcode != HAL_CAN_ERROR_NONE)
2059 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 2354 if ((hcan->
Instance->MSR & CAN_MSR_SLAK) != 0U)
2360 else if ((hcan->
Instance->MCR & CAN_MCR_SLEEP) != 0U)
2395 HAL_StatusTypeDef status =
HAL_OK;
2407 hcan->
ErrorCode |= HAL_CAN_ERROR_NOT_INITIALIZED;
HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef *hcan)
Initializes the CAN peripheral according to the specified parameters in the CAN_InitStruct.
uint32_t HAL_CAN_IsTxMessagePending(CAN_HandleTypeDef *hcan, uint32_t TxMailboxes)
Check if a transmission request is pending on the selected Tx Mailboxes.
FunctionalState AutoWakeUp
void(* TxMailbox0CompleteCallback)(struct __CAN_HandleTypeDef *hcan)
void(* RxFifo0MsgPendingCallback)(struct __CAN_HandleTypeDef *hcan)
void(* SleepCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 0 message pending callback.
HAL_CAN_CallbackIDTypeDef
HAL CAN common Callback ID enumeration definition.
FunctionalState AutoRetransmission
uint32_t FilterMaskIdHigh
void HAL_CAN_SleepCallback(CAN_HandleTypeDef *hcan)
Sleep callback.
FunctionalState TransmitGlobalTime
HAL_StatusTypeDef HAL_CAN_UnRegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID)
Unregister a CAN CallBack. CAN callabck is redirected to the weak predefined callback.
void HAL_CAN_TxMailbox1CompleteCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 1 complete callback.
uint32_t HAL_CAN_GetRxFifoFillLevel(CAN_HandleTypeDef *hcan, uint32_t RxFifo)
Return Rx FIFO fill level.
uint32_t HAL_CAN_GetTxMailboxesFreeLevel(CAN_HandleTypeDef *hcan)
Return Tx Mailboxes free level: number of free Tx Mailboxes.
void(* RxFifo0FullCallback)(struct __CAN_HandleTypeDef *hcan)
This file contains all the functions prototypes for the HAL module driver.
FunctionalState TimeTriggeredMode
HAL_StatusTypeDef HAL_CAN_RegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID, void(*pCallback)(CAN_HandleTypeDef *_hcan))
Register a CAN CallBack. To be used instead of the weak predefined callback.
uint32_t HAL_CAN_GetError(CAN_HandleTypeDef *hcan)
Return the CAN error code.
HAL_StatusTypeDef HAL_CAN_AbortTxRequest(CAN_HandleTypeDef *hcan, uint32_t TxMailboxes)
Abort transmission requests.
uint32_t SlaveStartFilterBank
uint32_t HAL_CAN_GetTxTimestamp(CAN_HandleTypeDef *hcan, uint32_t TxMailbox)
Return timestamp of Tx message sent, if time triggered communication mode is enabled.
FunctionalState AutoBusOff
void(* MspInitCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_TxMailbox2AbortCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 2 Cancellation callback.
HAL_StatusTypeDef HAL_CAN_ResetError(CAN_HandleTypeDef *hcan)
Reset the CAN error code.
HAL_StatusTypeDef HAL_CAN_DeInit(CAN_HandleTypeDef *hcan)
Deinitializes the CAN peripheral registers to their default reset values.
CAN filter configuration structure definition.
uint32_t HAL_CAN_IsSleepActive(CAN_HandleTypeDef *hcan)
Check is sleep mode is active.
void(* RxFifo1FullCallback)(struct __CAN_HandleTypeDef *hcan)
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
void(* ErrorCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox1CompleteCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_RxFifo0FullCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 0 full callback.
void(* WakeUpFromRxMsgCallback)(struct __CAN_HandleTypeDef *hcan)
FunctionalState ReceiveFifoLocked
void HAL_CAN_RxFifo1FullCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 1 full callback.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef *hcan, CAN_FilterTypeDef *sFilterConfig)
Configures the CAN reception filter according to the specified parameters in the CAN_FilterInitStruct...
uint32_t FilterMatchIndex
void HAL_CAN_MspDeInit(CAN_HandleTypeDef *hcan)
DeInitializes the CAN MSP.
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...
void(* TxMailbox0AbortCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox2CompleteCallback)(struct __CAN_HandleTypeDef *hcan)
__IO HAL_CAN_StateTypeDef State
HAL_StatusTypeDef HAL_CAN_Start(CAN_HandleTypeDef *hcan)
Start the CAN module.
HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, CAN_TxHeaderTypeDef *pHeader, uint8_t aData[], uint32_t *pTxMailbox)
Add a message to the first free Tx mailbox and activate the corresponding transmission request...
void(* MspDeInitCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox1AbortCallback)(struct __CAN_HandleTypeDef *hcan)
FunctionalState TransmitFifoPriority
void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 1 message pending callback.
HAL_CAN_StateTypeDef
HAL State structures definition.
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.
void HAL_CAN_WakeUpFromRxMsgCallback(CAN_HandleTypeDef *hcan)
WakeUp from Rx message callback.
HAL_StatusTypeDef HAL_CAN_ActivateNotification(CAN_HandleTypeDef *hcan, uint32_t ActiveITs)
Enable interrupts.
void HAL_CAN_TxMailbox0AbortCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 0 Cancellation callback.
void(* TxMailbox2AbortCallback)(struct __CAN_HandleTypeDef *hcan)
HAL_StatusTypeDef HAL_CAN_DeactivateNotification(CAN_HandleTypeDef *hcan, uint32_t InactiveITs)
Disable interrupts.
void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan)
Error CAN callback.
void HAL_CAN_TxMailbox0CompleteCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 0 complete callback.
uint32_t FilterActivation
HAL_StatusTypeDef HAL_CAN_Stop(CAN_HandleTypeDef *hcan)
Stop the CAN module and enable access to configuration registers.
void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 2 complete callback.
uint32_t FilterFIFOAssignment
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_CAN_StateTypeDef HAL_CAN_GetState(CAN_HandleTypeDef *hcan)
Return the CAN state.
void HAL_CAN_IRQHandler(CAN_HandleTypeDef *hcan)
Handles CAN interrupt request.
CAN handle Structure definition.
void HAL_CAN_MspInit(CAN_HandleTypeDef *hcan)
Initializes the CAN MSP.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
void HAL_CAN_TxMailbox1AbortCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 1 Cancellation callback.
void(* RxFifo1MsgPendingCallback)(struct __CAN_HandleTypeDef *hcan)