Go to the documentation of this file.
113 #include "stm32f4xx_hal.h"
124 #ifdef HAL_CAN_LEGACY_MODULE_ENABLED
126 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
127 defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
128 defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) ||\
129 defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) ||\
132 #ifdef HAL_CAN_MODULE_ENABLED
136 #error 'The HAL CAN driver cannot be used with its legacy, Please ensure to enable only one HAL CAN module at once in stm32f4xx_hal_conf.h file'
139 #warning 'Legacy HAL CAN driver is enabled! It can be used with known limitations, refer to the release notes. However it is recommended to use rather the new HAL CAN driver'
146 #define CAN_TIMEOUT_VALUE 10U
192 uint32_t tickstart = 0U;
238 if((
HAL_GetTick() - tickstart ) > CAN_TIMEOUT_VALUE)
326 if((
HAL_GetTick() - tickstart ) > CAN_TIMEOUT_VALUE)
374 uint32_t filternbrbitpos = 0U;
413 can_ip->
FA1R &= ~(uint32_t)filternbrbitpos;
419 can_ip->
FS1R &= ~(uint32_t)filternbrbitpos;
425 (0x0000FFFFU & (uint32_t)sFilterConfig->
FilterIdLow);
437 can_ip->
FS1R |= filternbrbitpos;
441 ((0x0000FFFFU & (uint32_t)sFilterConfig->
FilterIdHigh) << 16U) |
442 (0x0000FFFFU & (uint32_t)sFilterConfig->
FilterIdLow);
453 can_ip->
FM1R &= ~(uint32_t)filternbrbitpos;
458 can_ip->
FM1R |= (uint32_t)filternbrbitpos;
465 can_ip->
FFA1R &= ~(uint32_t)filternbrbitpos;
471 can_ip->
FFA1R |= (uint32_t)filternbrbitpos;
477 can_ip->
FA1R |= filternbrbitpos;
581 uint32_t tickstart = 0U;
643 hcan->
pTxMsg->
DLC &= (uint8_t)0x0000000F;
668 if((Timeout == 0U)||((
HAL_GetTick() - tickstart ) > Timeout))
767 hcan->
pTxMsg->
DLC &= (uint8_t)0x0000000F;
838 uint32_t tickstart = 0U;
912 if((Timeout == 0U)||((
HAL_GetTick() - tickstart ) > Timeout))
1130 uint32_t tickstart = 0U;
1157 if((
HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE)
1185 uint32_t tickstart = 0U;
1202 if((
HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE)
1237 uint32_t tmp1 = 0U, tmp2 = 0U, tmp3 = 0U;
1270 if(tmp1 || tmp2 || tmp3)
1276 if(tmp1 || tmp2 || tmp3)
1279 CAN_Transmit_IT(hcan);
1296 if((tmp1 != 0U) && tmp2)
1305 if((tmp1 != 0U) && tmp2)
1318 if(tmp1 && tmp2 && tmp3)
1328 if(tmp1 && tmp2 && tmp3)
1338 if(tmp1 && tmp2 && tmp3)
1348 if((!tmp1) && tmp2 && tmp3)
#define assert_param(expr)
Include module's header file.
CanRxMsgTypeDef * pRx1Msg
HAL_StatusTypeDef HAL_CAN_Sleep(CAN_HandleTypeDef *hcan)
HAL_StatusTypeDef
HAL Status structures definition
#define HAL_CAN_ERROR_EWG
void HAL_CAN_MspInit(CAN_HandleTypeDef *hcan)
#define HAL_CAN_ERROR_TXFAIL
#define HAL_IS_BIT_CLR(REG, BIT)
#define __HAL_CAN_CANCEL_TRANSMIT(__HANDLE__, __TRANSMITMAILBOX__)
Cancel a transmit request.
#define IS_CAN_IDTYPE(IDTYPE)
#define __HAL_CAN_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the specified CAN pending flag.
#define IS_CAN_BANKNUMBER(BANKNUMBER)
HAL_StatusTypeDef HAL_CAN_Transmit(CAN_HandleTypeDef *hcan, uint32_t Timeout)
#define IS_CAN_EXTID(EXTID)
HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef *hcan)
#define __HAL_CAN_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disable the specified CAN interrupts.
HAL_StatusTypeDef HAL_CAN_Receive_IT(CAN_HandleTypeDef *hcan, uint8_t FIFONumber)
#define IS_CAN_MODE(MODE)
uint32_t FilterMaskIdHigh
HAL_StatusTypeDef HAL_CAN_DeInit(CAN_HandleTypeDef *hcan)
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define HAL_CAN_ERROR_FOV1
void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef *hcan)
CAN filter configuration structure definition.
#define IS_CAN_ALL_INSTANCE(INSTANCE)
CAN handle Structure definition.
#define IS_CAN_STDID(STDID)
void HAL_CAN_MspDeInit(CAN_HandleTypeDef *hcan)
CAN_FilterRegister_TypeDef sFilterRegister[28]
#define HAL_CAN_ERROR_ACK
#define CAN_TXSTATUS_NOMAILBOX
#define IS_FUNCTIONAL_STATE(STATE)
CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]
CAN_TxMailBox_TypeDef sTxMailBox[3]
#define IS_CAN_FILTER_SCALE(SCALE)
#define __HAL_CAN_GET_FLAG(__HANDLE__, __FLAG__)
Check whether the specified CAN flag is set or not.
#define HAL_CAN_ERROR_CRC
HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef *hcan, CAN_FilterConfTypeDef *sFilterConfig)
#define __HAL_LOCK(__HANDLE__)
@ HAL_CAN_STATE_BUSY_RX0_RX1
#define CAN_FILTERSCALE_16BIT
#define __HAL_CAN_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)
Check if the specified CAN interrupt source is enabled or disabled.
#define __HAL_CAN_FIFO_RELEASE(__HANDLE__, __FIFONUMBER__)
Release the specified receive FIFO.
uint32_t FilterActivation
#define __HAL_UNLOCK(__HANDLE__)
#define CAN_INITSTATUS_FAILED
HAL_StatusTypeDef HAL_CAN_Receive(CAN_HandleTypeDef *hcan, uint8_t FIFONumber, uint32_t Timeout)
@ HAL_CAN_STATE_BUSY_TX_RX1
#define IS_CAN_FIFO(FIFO)
CAN Rx message structure definition.
#define IS_CAN_FILTER_MODE(MODE)
#define CAN_FILTERSCALE_32BIT
__IO HAL_CAN_StateTypeDef State
#define __HAL_CAN_TRANSMIT_STATUS(__HANDLE__, __TRANSMITMAILBOX__)
Check the transmission status of a CAN Frame.
#define HAL_CAN_ERROR_STF
uint32_t HAL_CAN_GetError(CAN_HandleTypeDef *hcan)
#define IS_CAN_FILTER_FIFO(FIFO)
#define __HAL_CAN_MSG_PENDING(__HANDLE__, __FIFONUMBER__)
Return the number of pending received messages.
#define __HAL_CAN_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable the specified CAN interrupts.
HAL_CAN_StateTypeDef
HAL State structures definition.
void HAL_CAN_IRQHandler(CAN_HandleTypeDef *hcan)
#define IS_CAN_PRESCALER(PRESCALER)
#define HAL_CAN_ERROR_FOV0
void HAL_CAN_TxCpltCallback(CAN_HandleTypeDef *hcan)
#define IS_CAN_FILTER_NUMBER(NUMBER)
#define HAL_CAN_ERROR_EPV
HAL_StatusTypeDef HAL_CAN_Transmit_IT(CAN_HandleTypeDef *hcan)
#define SET_BIT(REG, BIT)
#define HAL_CAN_ERROR_NONE
HAL_StatusTypeDef HAL_CAN_WakeUp(CAN_HandleTypeDef *hcan)
@ HAL_CAN_STATE_BUSY_TX_RX0
#define HAL_CAN_ERROR_BOF
#define CAN_INITSTATUS_SUCCESS
@ HAL_CAN_STATE_BUSY_TX_RX0_RX1
#define HAL_CAN_ERROR_FOR
uint32_t FilterFIFOAssignment
HAL_CAN_StateTypeDef HAL_CAN_GetState(CAN_HandleTypeDef *hcan)
#define CAN_FILTERMODE_IDMASK
void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan)