39 #ifndef __STM32F7xx_HAL_CAN_H 40 #define __STM32F7xx_HAL_CAN_H 251 #define HAL_CAN_ERROR_NONE 0x00U 252 #define HAL_CAN_ERROR_EWG 0x01U 253 #define HAL_CAN_ERROR_EPV 0x02U 254 #define HAL_CAN_ERROR_BOF 0x04U 255 #define HAL_CAN_ERROR_STF 0x08U 256 #define HAL_CAN_ERROR_FOR 0x10U 257 #define HAL_CAN_ERROR_ACK 0x20U 258 #define HAL_CAN_ERROR_BR 0x40U 259 #define HAL_CAN_ERROR_BD 0x80U 260 #define HAL_CAN_ERROR_CRC 0x100U 268 #define CAN_INITSTATUS_FAILED ((uint8_t)0x00U) 269 #define CAN_INITSTATUS_SUCCESS ((uint8_t)0x01U) 277 #define CAN_MODE_NORMAL ((uint32_t)0x00000000U) 278 #define CAN_MODE_LOOPBACK ((uint32_t)CAN_BTR_LBKM) 279 #define CAN_MODE_SILENT ((uint32_t)CAN_BTR_SILM) 280 #define CAN_MODE_SILENT_LOOPBACK ((uint32_t)(CAN_BTR_LBKM | CAN_BTR_SILM)) 288 #define CAN_SJW_1TQ ((uint32_t)0x00000000U) 289 #define CAN_SJW_2TQ ((uint32_t)CAN_BTR_SJW_0) 290 #define CAN_SJW_3TQ ((uint32_t)CAN_BTR_SJW_1) 291 #define CAN_SJW_4TQ ((uint32_t)CAN_BTR_SJW) 299 #define CAN_BS1_1TQ ((uint32_t)0x00000000U) 300 #define CAN_BS1_2TQ ((uint32_t)CAN_BTR_TS1_0) 301 #define CAN_BS1_3TQ ((uint32_t)CAN_BTR_TS1_1) 302 #define CAN_BS1_4TQ ((uint32_t)(CAN_BTR_TS1_1 | CAN_BTR_TS1_0)) 303 #define CAN_BS1_5TQ ((uint32_t)CAN_BTR_TS1_2) 304 #define CAN_BS1_6TQ ((uint32_t)(CAN_BTR_TS1_2 | CAN_BTR_TS1_0)) 305 #define CAN_BS1_7TQ ((uint32_t)(CAN_BTR_TS1_2 | CAN_BTR_TS1_1)) 306 #define CAN_BS1_8TQ ((uint32_t)(CAN_BTR_TS1_2 | CAN_BTR_TS1_1 | CAN_BTR_TS1_0)) 307 #define CAN_BS1_9TQ ((uint32_t)CAN_BTR_TS1_3) 308 #define CAN_BS1_10TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_0)) 309 #define CAN_BS1_11TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_1)) 310 #define CAN_BS1_12TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_1 | CAN_BTR_TS1_0)) 311 #define CAN_BS1_13TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_2)) 312 #define CAN_BS1_14TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_2 | CAN_BTR_TS1_0)) 313 #define CAN_BS1_15TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_2 | CAN_BTR_TS1_1)) 314 #define CAN_BS1_16TQ ((uint32_t)CAN_BTR_TS1) 322 #define CAN_BS2_1TQ ((uint32_t)0x00000000U) 323 #define CAN_BS2_2TQ ((uint32_t)CAN_BTR_TS2_0) 324 #define CAN_BS2_3TQ ((uint32_t)CAN_BTR_TS2_1) 325 #define CAN_BS2_4TQ ((uint32_t)(CAN_BTR_TS2_1 | CAN_BTR_TS2_0)) 326 #define CAN_BS2_5TQ ((uint32_t)CAN_BTR_TS2_2) 327 #define CAN_BS2_6TQ ((uint32_t)(CAN_BTR_TS2_2 | CAN_BTR_TS2_0)) 328 #define CAN_BS2_7TQ ((uint32_t)(CAN_BTR_TS2_2 | CAN_BTR_TS2_1)) 329 #define CAN_BS2_8TQ ((uint32_t)CAN_BTR_TS2) 337 #define CAN_FILTERMODE_IDMASK ((uint8_t)0x00U) 338 #define CAN_FILTERMODE_IDLIST ((uint8_t)0x01U) 346 #define CAN_FILTERSCALE_16BIT ((uint8_t)0x00U) 347 #define CAN_FILTERSCALE_32BIT ((uint8_t)0x01U) 355 #define CAN_FILTER_FIFO0 ((uint8_t)0x00U) 356 #define CAN_FILTER_FIFO1 ((uint8_t)0x01U) 364 #define CAN_ID_STD ((uint32_t)0x00000000U) 365 #define CAN_ID_EXT ((uint32_t)0x00000004U) 373 #define CAN_RTR_DATA ((uint32_t)0x00000000U) 374 #define CAN_RTR_REMOTE ((uint32_t)0x00000002U) 382 #define CAN_FIFO0 ((uint8_t)0x00U) 383 #define CAN_FIFO1 ((uint8_t)0x01U) 397 #define CAN_FLAG_RQCP0 ((uint32_t)0x00000500U) 398 #define CAN_FLAG_RQCP1 ((uint32_t)0x00000508U) 399 #define CAN_FLAG_RQCP2 ((uint32_t)0x00000510U) 400 #define CAN_FLAG_TXOK0 ((uint32_t)0x00000501U) 401 #define CAN_FLAG_TXOK1 ((uint32_t)0x00000509U) 402 #define CAN_FLAG_TXOK2 ((uint32_t)0x00000511U) 403 #define CAN_FLAG_TME0 ((uint32_t)0x0000051AU) 404 #define CAN_FLAG_TME1 ((uint32_t)0x0000051BU) 405 #define CAN_FLAG_TME2 ((uint32_t)0x0000051CU) 408 #define CAN_FLAG_FF0 ((uint32_t)0x00000203U) 409 #define CAN_FLAG_FOV0 ((uint32_t)0x00000204U) 411 #define CAN_FLAG_FF1 ((uint32_t)0x00000403U) 412 #define CAN_FLAG_FOV1 ((uint32_t)0x00000404U) 415 #define CAN_FLAG_INAK ((uint32_t)0x00000100U) 416 #define CAN_FLAG_SLAK ((uint32_t)0x00000101U) 417 #define CAN_FLAG_ERRI ((uint32_t)0x00000102U) 418 #define CAN_FLAG_WKU ((uint32_t)0x00000103U) 419 #define CAN_FLAG_SLAKI ((uint32_t)0x00000104U) 425 #define CAN_FLAG_EWG ((uint32_t)0x00000300U) 426 #define CAN_FLAG_EPV ((uint32_t)0x00000301U) 427 #define CAN_FLAG_BOF ((uint32_t)0x00000302U) 435 #define CAN_IT_TME ((uint32_t)CAN_IER_TMEIE) 438 #define CAN_IT_FMP0 ((uint32_t)CAN_IER_FMPIE0) 439 #define CAN_IT_FF0 ((uint32_t)CAN_IER_FFIE0) 440 #define CAN_IT_FOV0 ((uint32_t)CAN_IER_FOVIE0) 441 #define CAN_IT_FMP1 ((uint32_t)CAN_IER_FMPIE1) 442 #define CAN_IT_FF1 ((uint32_t)CAN_IER_FFIE1) 443 #define CAN_IT_FOV1 ((uint32_t)CAN_IER_FOVIE1) 446 #define CAN_IT_WKU ((uint32_t)CAN_IER_WKUIE) 447 #define CAN_IT_SLK ((uint32_t)CAN_IER_SLKIE) 450 #define CAN_IT_EWG ((uint32_t)CAN_IER_EWGIE) 451 #define CAN_IT_EPV ((uint32_t)CAN_IER_EPVIE) 452 #define CAN_IT_BOF ((uint32_t)CAN_IER_BOFIE) 453 #define CAN_IT_LEC ((uint32_t)CAN_IER_LECIE) 454 #define CAN_IT_ERR ((uint32_t)CAN_IER_ERRIE) 462 #define CAN_TXMAILBOX_0 ((uint8_t)0x00U) 463 #define CAN_TXMAILBOX_1 ((uint8_t)0x01U) 464 #define CAN_TXMAILBOX_2 ((uint8_t)0x02U) 482 #define __HAL_CAN_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CAN_STATE_RESET) 490 #define __HAL_CAN_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IER) |= (__INTERRUPT__)) 498 #define __HAL_CAN_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IER) &= ~(__INTERRUPT__)) 506 #define __HAL_CAN_MSG_PENDING(__HANDLE__, __FIFONUMBER__) (((__FIFONUMBER__) == CAN_FIFO0)? \ 507 ((uint8_t)((__HANDLE__)->Instance->RF0R&(uint32_t)0x03)) : ((uint8_t)((__HANDLE__)->Instance->RF1R&(uint32_t)0x03))) 536 #define __HAL_CAN_GET_FLAG(__HANDLE__, __FLAG__) \ 537 ((((__FLAG__) >> 8) == 5)? ((((__HANDLE__)->Instance->TSR) & (1 << ((__FLAG__) & CAN_FLAG_MASK))) == (1 << ((__FLAG__) & CAN_FLAG_MASK))): \ 538 (((__FLAG__) >> 8) == 2)? ((((__HANDLE__)->Instance->RF0R) & (1 << ((__FLAG__) & CAN_FLAG_MASK))) == (1 << ((__FLAG__) & CAN_FLAG_MASK))): \ 539 (((__FLAG__) >> 8) == 4)? ((((__HANDLE__)->Instance->RF1R) & (1 << ((__FLAG__) & CAN_FLAG_MASK))) == (1 << ((__FLAG__) & CAN_FLAG_MASK))): \ 540 (((__FLAG__) >> 8) == 1)? ((((__HANDLE__)->Instance->MSR) & (1 << ((__FLAG__) & CAN_FLAG_MASK))) == (1 << ((__FLAG__) & CAN_FLAG_MASK))): \ 541 ((((__HANDLE__)->Instance->ESR) & (1 << ((__FLAG__) & CAN_FLAG_MASK))) == (1 << ((__FLAG__) & CAN_FLAG_MASK)))) 567 #define __HAL_CAN_CLEAR_FLAG(__HANDLE__, __FLAG__) \ 568 ((((__FLAG__) >> 8) == 5)? (((__HANDLE__)->Instance->TSR) = ((uint32_t)1 << ((__FLAG__) & CAN_FLAG_MASK))): \ 569 (((__FLAG__) >> 8) == 2)? (((__HANDLE__)->Instance->RF0R) = ((uint32_t)1 << ((__FLAG__) & CAN_FLAG_MASK))): \ 570 (((__FLAG__) >> 8) == 4)? (((__HANDLE__)->Instance->RF1R) = ((uint32_t)1 << ((__FLAG__) & CAN_FLAG_MASK))): \ 571 (((__HANDLE__)->Instance->MSR) = ((uint32_t)1 << ((__FLAG__) & CAN_FLAG_MASK)))) 582 #define __HAL_CAN_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) 590 #define __HAL_CAN_TRANSMIT_STATUS(__HANDLE__, __TRANSMITMAILBOX__)\ 591 (((__TRANSMITMAILBOX__) == CAN_TXMAILBOX_0)? ((((__HANDLE__)->Instance->TSR) & (CAN_TSR_RQCP0 | CAN_TSR_TXOK0 | CAN_TSR_TME0)) == (CAN_TSR_RQCP0 | CAN_TSR_TXOK0 | CAN_TSR_TME0)) :\ 592 ((__TRANSMITMAILBOX__) == CAN_TXMAILBOX_1)? ((((__HANDLE__)->Instance->TSR) & (CAN_TSR_RQCP1 | CAN_TSR_TXOK1 | CAN_TSR_TME1)) == (CAN_TSR_RQCP1 | CAN_TSR_TXOK1 | CAN_TSR_TME1)) :\ 593 ((((__HANDLE__)->Instance->TSR) & (CAN_TSR_RQCP2 | CAN_TSR_TXOK2 | CAN_TSR_TME2)) == (CAN_TSR_RQCP2 | CAN_TSR_TXOK2 | CAN_TSR_TME2))) 601 #define __HAL_CAN_FIFO_RELEASE(__HANDLE__, __FIFONUMBER__) (((__FIFONUMBER__) == CAN_FIFO0)? \ 602 ((__HANDLE__)->Instance->RF0R = CAN_RF0R_RFOM0) : ((__HANDLE__)->Instance->RF1R = CAN_RF1R_RFOM1)) 610 #define __HAL_CAN_CANCEL_TRANSMIT(__HANDLE__, __TRANSMITMAILBOX__)\ 611 (((__TRANSMITMAILBOX__) == CAN_TXMAILBOX_0)? ((__HANDLE__)->Instance->TSR = CAN_TSR_ABRQ0) :\ 612 ((__TRANSMITMAILBOX__) == CAN_TXMAILBOX_1)? ((__HANDLE__)->Instance->TSR = CAN_TSR_ABRQ1) :\ 613 ((__HANDLE__)->Instance->TSR = CAN_TSR_ABRQ2)) 624 #define __HAL_CAN_DBG_FREEZE(__HANDLE__, __NEWSTATE__) (((__NEWSTATE__) == ENABLE)? \ 625 ((__HANDLE__)->Instance->MCR |= CAN_MCR_DBF) : ((__HANDLE__)->Instance->MCR &= ~CAN_MCR_DBF)) 703 #define CAN_TXSTATUS_NOMAILBOX ((uint8_t)0x04U) 704 #define CAN_FLAG_MASK ((uint32_t)0x000000FFU) 713 #define IS_CAN_MODE(MODE) (((MODE) == CAN_MODE_NORMAL) || \ 714 ((MODE) == CAN_MODE_LOOPBACK)|| \ 715 ((MODE) == CAN_MODE_SILENT) || \ 716 ((MODE) == CAN_MODE_SILENT_LOOPBACK)) 717 #define IS_CAN_SJW(SJW) (((SJW) == CAN_SJW_1TQ) || ((SJW) == CAN_SJW_2TQ)|| \ 718 ((SJW) == CAN_SJW_3TQ) || ((SJW) == CAN_SJW_4TQ)) 719 #define IS_CAN_BS1(BS1) ((BS1) <= CAN_BS1_16TQ) 720 #define IS_CAN_BS2(BS2) ((BS2) <= CAN_BS2_8TQ) 721 #define IS_CAN_PRESCALER(PRESCALER) (((PRESCALER) >= 1) && ((PRESCALER) <= 1024)) 722 #define IS_CAN_FILTER_NUMBER(NUMBER) ((NUMBER) <= 27) 723 #define IS_CAN_FILTER_MODE(MODE) (((MODE) == CAN_FILTERMODE_IDMASK) || \ 724 ((MODE) == CAN_FILTERMODE_IDLIST)) 725 #define IS_CAN_FILTER_SCALE(SCALE) (((SCALE) == CAN_FILTERSCALE_16BIT) || \ 726 ((SCALE) == CAN_FILTERSCALE_32BIT)) 727 #define IS_CAN_FILTER_FIFO(FIFO) (((FIFO) == CAN_FILTER_FIFO0) || \ 728 ((FIFO) == CAN_FILTER_FIFO1)) 729 #define IS_CAN_BANKNUMBER(BANKNUMBER) ((BANKNUMBER) <= 28) 731 #define IS_CAN_TRANSMITMAILBOX(TRANSMITMAILBOX) ((TRANSMITMAILBOX) <= ((uint8_t)0x02)) 732 #define IS_CAN_STDID(STDID) ((STDID) <= ((uint32_t)0x7FF)) 733 #define IS_CAN_EXTID(EXTID) ((EXTID) <= ((uint32_t)0x1FFFFFFF)) 734 #define IS_CAN_DLC(DLC) ((DLC) <= ((uint8_t)0x08)) 736 #define IS_CAN_IDTYPE(IDTYPE) (((IDTYPE) == CAN_ID_STD) || \ 737 ((IDTYPE) == CAN_ID_EXT)) 738 #define IS_CAN_RTR(RTR) (((RTR) == CAN_RTR_DATA) || ((RTR) == CAN_RTR_REMOTE)) 739 #define IS_CAN_FIFO(FIFO) (((FIFO) == CAN_FIFO0) || ((FIFO) == CAN_FIFO1))
uint32_t HAL_CAN_GetError(CAN_HandleTypeDef *hcan)
CAN handle Structure definition.
HAL_LockTypeDef
HAL Lock structures definition.
HAL_StatusTypeDef HAL_CAN_DeInit(CAN_HandleTypeDef *hcan)
uint32_t FilterFIFOAssignment
HAL_StatusTypeDef HAL_CAN_Transmit_IT(CAN_HandleTypeDef *hcan)
HAL_CAN_StateTypeDef HAL_CAN_GetState(CAN_HandleTypeDef *hcan)
HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef *hcan, CAN_FilterConfTypeDef *sFilterConfig)
void HAL_CAN_MspInit(CAN_HandleTypeDef *hcan)
void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef *hcan)
void HAL_CAN_TxCpltCallback(CAN_HandleTypeDef *hcan)
CAN init structure definition.
HAL_CAN_StateTypeDef
HAL State structures definition.
CAN filter configuration structure definition.
CAN Rx message structure definition.
CAN Tx message structure definition.
HAL_StatusTypeDef HAL_CAN_WakeUp(CAN_HandleTypeDef *hcan)
void HAL_CAN_MspDeInit(CAN_HandleTypeDef *hcan)
uint32_t FilterActivation
HAL_StatusTypeDef HAL_CAN_Sleep(CAN_HandleTypeDef *hcan)
HAL_StatusTypeDef HAL_CAN_Transmit(CAN_HandleTypeDef *hcan, uint32_t Timeout)
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef *hcan)
HAL_StatusTypeDef HAL_CAN_Receive_IT(CAN_HandleTypeDef *hcan, uint8_t FIFONumber)
void HAL_CAN_IRQHandler(CAN_HandleTypeDef *hcan)
__IO HAL_CAN_StateTypeDef State
HAL_StatusTypeDef
HAL Status structures definition.
void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan)
HAL_StatusTypeDef HAL_CAN_Receive(CAN_HandleTypeDef *hcan, uint8_t FIFONumber, uint32_t Timeout)
uint32_t FilterMaskIdHigh