cantata
stm32f1xx_hal_can.h
Go to the documentation of this file.
1 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32F1xx_HAL_CAN_H
22 #define STM32F1xx_HAL_CAN_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32f1xx_hal_def.h"
30 
35 #if defined (CAN1)
36 
40 /* Exported types ------------------------------------------------------------*/
47 typedef enum
48 {
49  HAL_CAN_STATE_RESET = 0x00U,
50  HAL_CAN_STATE_READY = 0x01U,
51  HAL_CAN_STATE_LISTENING = 0x02U,
52  HAL_CAN_STATE_SLEEP_PENDING = 0x03U,
53  HAL_CAN_STATE_SLEEP_ACTIVE = 0x04U,
54  HAL_CAN_STATE_ERROR = 0x05U
56 } HAL_CAN_StateTypeDef;
57 
61 typedef struct
62 {
63  uint32_t Prescaler;
66  uint32_t Mode;
69  uint32_t SyncJumpWidth;
73  uint32_t TimeSeg1;
76  uint32_t TimeSeg2;
79  FunctionalState TimeTriggeredMode;
82  FunctionalState AutoBusOff;
85  FunctionalState AutoWakeUp;
88  FunctionalState AutoRetransmission;
91  FunctionalState ReceiveFifoLocked;
94  FunctionalState TransmitFifoPriority;
97 } CAN_InitTypeDef;
98 
102 typedef struct
103 {
104  uint32_t FilterIdHigh;
108  uint32_t FilterIdLow;
112  uint32_t FilterMaskIdHigh;
117  uint32_t FilterMaskIdLow;
122  uint32_t FilterFIFOAssignment;
125  uint32_t FilterBank;
131  uint32_t FilterMode;
134  uint32_t FilterScale;
137  uint32_t FilterActivation;
140  uint32_t SlaveStartFilterBank;
147 } CAN_FilterTypeDef;
148 
152 typedef struct
153 {
154  uint32_t StdId;
157  uint32_t ExtId;
160  uint32_t IDE;
163  uint32_t RTR;
166  uint32_t DLC;
169  FunctionalState TransmitGlobalTime;
175 } CAN_TxHeaderTypeDef;
176 
180 typedef struct
181 {
182  uint32_t StdId;
185  uint32_t ExtId;
188  uint32_t IDE;
191  uint32_t RTR;
194  uint32_t DLC;
197  uint32_t Timestamp;
201  uint32_t FilterMatchIndex;
204 } CAN_RxHeaderTypeDef;
205 
209 typedef struct __CAN_HandleTypeDef
210 {
211  CAN_TypeDef *Instance;
213  CAN_InitTypeDef Init;
215  __IO HAL_CAN_StateTypeDef State;
217  __IO uint32_t ErrorCode;
220 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1
221  void (* TxMailbox0CompleteCallback)(struct __CAN_HandleTypeDef *hcan);
222  void (* TxMailbox1CompleteCallback)(struct __CAN_HandleTypeDef *hcan);
223  void (* TxMailbox2CompleteCallback)(struct __CAN_HandleTypeDef *hcan);
224  void (* TxMailbox0AbortCallback)(struct __CAN_HandleTypeDef *hcan);
225  void (* TxMailbox1AbortCallback)(struct __CAN_HandleTypeDef *hcan);
226  void (* TxMailbox2AbortCallback)(struct __CAN_HandleTypeDef *hcan);
227  void (* RxFifo0MsgPendingCallback)(struct __CAN_HandleTypeDef *hcan);
228  void (* RxFifo0FullCallback)(struct __CAN_HandleTypeDef *hcan);
229  void (* RxFifo1MsgPendingCallback)(struct __CAN_HandleTypeDef *hcan);
230  void (* RxFifo1FullCallback)(struct __CAN_HandleTypeDef *hcan);
231  void (* SleepCallback)(struct __CAN_HandleTypeDef *hcan);
232  void (* WakeUpFromRxMsgCallback)(struct __CAN_HandleTypeDef *hcan);
233  void (* ErrorCallback)(struct __CAN_HandleTypeDef *hcan);
235  void (* MspInitCallback)(struct __CAN_HandleTypeDef *hcan);
236  void (* MspDeInitCallback)(struct __CAN_HandleTypeDef *hcan);
238 #endif /* (USE_HAL_CAN_REGISTER_CALLBACKS) */
239 } CAN_HandleTypeDef;
240 
241 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1
242 
245 typedef enum
246 {
247  HAL_CAN_TX_MAILBOX0_COMPLETE_CB_ID = 0x00U,
248  HAL_CAN_TX_MAILBOX1_COMPLETE_CB_ID = 0x01U,
249  HAL_CAN_TX_MAILBOX2_COMPLETE_CB_ID = 0x02U,
250  HAL_CAN_TX_MAILBOX0_ABORT_CB_ID = 0x03U,
251  HAL_CAN_TX_MAILBOX1_ABORT_CB_ID = 0x04U,
252  HAL_CAN_TX_MAILBOX2_ABORT_CB_ID = 0x05U,
253  HAL_CAN_RX_FIFO0_MSG_PENDING_CB_ID = 0x06U,
254  HAL_CAN_RX_FIFO0_FULL_CB_ID = 0x07U,
255  HAL_CAN_RX_FIFO1_MSG_PENDING_CB_ID = 0x08U,
256  HAL_CAN_RX_FIFO1_FULL_CB_ID = 0x09U,
257  HAL_CAN_SLEEP_CB_ID = 0x0AU,
258  HAL_CAN_WAKEUP_FROM_RX_MSG_CB_ID = 0x0BU,
259  HAL_CAN_ERROR_CB_ID = 0x0CU,
261  HAL_CAN_MSPINIT_CB_ID = 0x0DU,
262  HAL_CAN_MSPDEINIT_CB_ID = 0x0EU,
264 } HAL_CAN_CallbackIDTypeDef;
265 
269 typedef void (*pCAN_CallbackTypeDef)(CAN_HandleTypeDef *hcan);
271 #endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
272 
276 /* Exported constants --------------------------------------------------------*/
277 
285 #define HAL_CAN_ERROR_NONE (0x00000000U)
286 #define HAL_CAN_ERROR_EWG (0x00000001U)
287 #define HAL_CAN_ERROR_EPV (0x00000002U)
288 #define HAL_CAN_ERROR_BOF (0x00000004U)
289 #define HAL_CAN_ERROR_STF (0x00000008U)
290 #define HAL_CAN_ERROR_FOR (0x00000010U)
291 #define HAL_CAN_ERROR_ACK (0x00000020U)
292 #define HAL_CAN_ERROR_BR (0x00000040U)
293 #define HAL_CAN_ERROR_BD (0x00000080U)
294 #define HAL_CAN_ERROR_CRC (0x00000100U)
295 #define HAL_CAN_ERROR_RX_FOV0 (0x00000200U)
296 #define HAL_CAN_ERROR_RX_FOV1 (0x00000400U)
297 #define HAL_CAN_ERROR_TX_ALST0 (0x00000800U)
298 #define HAL_CAN_ERROR_TX_TERR0 (0x00001000U)
299 #define HAL_CAN_ERROR_TX_ALST1 (0x00002000U)
300 #define HAL_CAN_ERROR_TX_TERR1 (0x00004000U)
301 #define HAL_CAN_ERROR_TX_ALST2 (0x00008000U)
302 #define HAL_CAN_ERROR_TX_TERR2 (0x00010000U)
303 #define HAL_CAN_ERROR_TIMEOUT (0x00020000U)
304 #define HAL_CAN_ERROR_NOT_INITIALIZED (0x00040000U)
305 #define HAL_CAN_ERROR_NOT_READY (0x00080000U)
306 #define HAL_CAN_ERROR_NOT_STARTED (0x00100000U)
307 #define HAL_CAN_ERROR_PARAM (0x00200000U)
309 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1
310 #define HAL_CAN_ERROR_INVALID_CALLBACK (0x00400000U)
311 #endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
312 #define HAL_CAN_ERROR_INTERNAL (0x00800000U)
321 #define CAN_INITSTATUS_FAILED (0x00000000U)
322 #define CAN_INITSTATUS_SUCCESS (0x00000001U)
330 #define CAN_MODE_NORMAL (0x00000000U)
331 #define CAN_MODE_LOOPBACK ((uint32_t)CAN_BTR_LBKM)
332 #define CAN_MODE_SILENT ((uint32_t)CAN_BTR_SILM)
333 #define CAN_MODE_SILENT_LOOPBACK ((uint32_t)(CAN_BTR_LBKM | CAN_BTR_SILM))
342 #define CAN_SJW_1TQ (0x00000000U)
343 #define CAN_SJW_2TQ ((uint32_t)CAN_BTR_SJW_0)
344 #define CAN_SJW_3TQ ((uint32_t)CAN_BTR_SJW_1)
345 #define CAN_SJW_4TQ ((uint32_t)CAN_BTR_SJW)
353 #define CAN_BS1_1TQ (0x00000000U)
354 #define CAN_BS1_2TQ ((uint32_t)CAN_BTR_TS1_0)
355 #define CAN_BS1_3TQ ((uint32_t)CAN_BTR_TS1_1)
356 #define CAN_BS1_4TQ ((uint32_t)(CAN_BTR_TS1_1 | CAN_BTR_TS1_0))
357 #define CAN_BS1_5TQ ((uint32_t)CAN_BTR_TS1_2)
358 #define CAN_BS1_6TQ ((uint32_t)(CAN_BTR_TS1_2 | CAN_BTR_TS1_0))
359 #define CAN_BS1_7TQ ((uint32_t)(CAN_BTR_TS1_2 | CAN_BTR_TS1_1))
360 #define CAN_BS1_8TQ ((uint32_t)(CAN_BTR_TS1_2 | CAN_BTR_TS1_1 | CAN_BTR_TS1_0))
361 #define CAN_BS1_9TQ ((uint32_t)CAN_BTR_TS1_3)
362 #define CAN_BS1_10TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_0))
363 #define CAN_BS1_11TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_1))
364 #define CAN_BS1_12TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_1 | CAN_BTR_TS1_0))
365 #define CAN_BS1_13TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_2))
366 #define CAN_BS1_14TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_2 | CAN_BTR_TS1_0))
367 #define CAN_BS1_15TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_2 | CAN_BTR_TS1_1))
368 #define CAN_BS1_16TQ ((uint32_t)CAN_BTR_TS1)
376 #define CAN_BS2_1TQ (0x00000000U)
377 #define CAN_BS2_2TQ ((uint32_t)CAN_BTR_TS2_0)
378 #define CAN_BS2_3TQ ((uint32_t)CAN_BTR_TS2_1)
379 #define CAN_BS2_4TQ ((uint32_t)(CAN_BTR_TS2_1 | CAN_BTR_TS2_0))
380 #define CAN_BS2_5TQ ((uint32_t)CAN_BTR_TS2_2)
381 #define CAN_BS2_6TQ ((uint32_t)(CAN_BTR_TS2_2 | CAN_BTR_TS2_0))
382 #define CAN_BS2_7TQ ((uint32_t)(CAN_BTR_TS2_2 | CAN_BTR_TS2_1))
383 #define CAN_BS2_8TQ ((uint32_t)CAN_BTR_TS2)
391 #define CAN_FILTERMODE_IDMASK (0x00000000U)
392 #define CAN_FILTERMODE_IDLIST (0x00000001U)
400 #define CAN_FILTERSCALE_16BIT (0x00000000U)
401 #define CAN_FILTERSCALE_32BIT (0x00000001U)
409 #define CAN_FILTER_DISABLE (0x00000000U)
410 #define CAN_FILTER_ENABLE (0x00000001U)
418 #define CAN_FILTER_FIFO0 (0x00000000U)
419 #define CAN_FILTER_FIFO1 (0x00000001U)
427 #define CAN_ID_STD (0x00000000U)
428 #define CAN_ID_EXT (0x00000004U)
436 #define CAN_RTR_DATA (0x00000000U)
437 #define CAN_RTR_REMOTE (0x00000002U)
445 #define CAN_RX_FIFO0 (0x00000000U)
446 #define CAN_RX_FIFO1 (0x00000001U)
454 #define CAN_TX_MAILBOX0 (0x00000001U)
455 #define CAN_TX_MAILBOX1 (0x00000002U)
456 #define CAN_TX_MAILBOX2 (0x00000004U)
464 /* Transmit Flags */
465 #define CAN_FLAG_RQCP0 (0x00000500U)
466 #define CAN_FLAG_TXOK0 (0x00000501U)
467 #define CAN_FLAG_ALST0 (0x00000502U)
468 #define CAN_FLAG_TERR0 (0x00000503U)
469 #define CAN_FLAG_RQCP1 (0x00000508U)
470 #define CAN_FLAG_TXOK1 (0x00000509U)
471 #define CAN_FLAG_ALST1 (0x0000050AU)
472 #define CAN_FLAG_TERR1 (0x0000050BU)
473 #define CAN_FLAG_RQCP2 (0x00000510U)
474 #define CAN_FLAG_TXOK2 (0x00000511U)
475 #define CAN_FLAG_ALST2 (0x00000512U)
476 #define CAN_FLAG_TERR2 (0x00000513U)
477 #define CAN_FLAG_TME0 (0x0000051AU)
478 #define CAN_FLAG_TME1 (0x0000051BU)
479 #define CAN_FLAG_TME2 (0x0000051CU)
480 #define CAN_FLAG_LOW0 (0x0000051DU)
481 #define CAN_FLAG_LOW1 (0x0000051EU)
482 #define CAN_FLAG_LOW2 (0x0000051FU)
484 /* Receive Flags */
485 #define CAN_FLAG_FF0 (0x00000203U)
486 #define CAN_FLAG_FOV0 (0x00000204U)
487 #define CAN_FLAG_FF1 (0x00000403U)
488 #define CAN_FLAG_FOV1 (0x00000404U)
490 /* Operating Mode Flags */
491 #define CAN_FLAG_INAK (0x00000100U)
492 #define CAN_FLAG_SLAK (0x00000101U)
493 #define CAN_FLAG_ERRI (0x00000102U)
494 #define CAN_FLAG_WKU (0x00000103U)
495 #define CAN_FLAG_SLAKI (0x00000104U)
497 /* Error Flags */
498 #define CAN_FLAG_EWG (0x00000300U)
499 #define CAN_FLAG_EPV (0x00000301U)
500 #define CAN_FLAG_BOF (0x00000302U)
509 /* Transmit Interrupt */
510 #define CAN_IT_TX_MAILBOX_EMPTY ((uint32_t)CAN_IER_TMEIE)
512 /* Receive Interrupts */
513 #define CAN_IT_RX_FIFO0_MSG_PENDING ((uint32_t)CAN_IER_FMPIE0)
514 #define CAN_IT_RX_FIFO0_FULL ((uint32_t)CAN_IER_FFIE0)
515 #define CAN_IT_RX_FIFO0_OVERRUN ((uint32_t)CAN_IER_FOVIE0)
516 #define CAN_IT_RX_FIFO1_MSG_PENDING ((uint32_t)CAN_IER_FMPIE1)
517 #define CAN_IT_RX_FIFO1_FULL ((uint32_t)CAN_IER_FFIE1)
518 #define CAN_IT_RX_FIFO1_OVERRUN ((uint32_t)CAN_IER_FOVIE1)
520 /* Operating Mode Interrupts */
521 #define CAN_IT_WAKEUP ((uint32_t)CAN_IER_WKUIE)
522 #define CAN_IT_SLEEP_ACK ((uint32_t)CAN_IER_SLKIE)
524 /* Error Interrupts */
525 #define CAN_IT_ERROR_WARNING ((uint32_t)CAN_IER_EWGIE)
526 #define CAN_IT_ERROR_PASSIVE ((uint32_t)CAN_IER_EPVIE)
527 #define CAN_IT_BUSOFF ((uint32_t)CAN_IER_BOFIE)
528 #define CAN_IT_LAST_ERROR_CODE ((uint32_t)CAN_IER_LECIE)
529 #define CAN_IT_ERROR ((uint32_t)CAN_IER_ERRIE)
538 /* Exported macros -----------------------------------------------------------*/
539 
547 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1
548 #define __HAL_CAN_RESET_HANDLE_STATE(__HANDLE__) do{ \
549  (__HANDLE__)->State = HAL_CAN_STATE_RESET; \
550  (__HANDLE__)->MspInitCallback = NULL; \
551  (__HANDLE__)->MspDeInitCallback = NULL; \
552  } while(0)
553 #else
554 #define __HAL_CAN_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CAN_STATE_RESET)
555 #endif /*USE_HAL_CAN_REGISTER_CALLBACKS */
556 
564 #define __HAL_CAN_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IER) |= (__INTERRUPT__))
565 
573 #define __HAL_CAN_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IER) &= ~(__INTERRUPT__))
574 
581 #define __HAL_CAN_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IER) & (__INTERRUPT__))
582 
589 #define __HAL_CAN_GET_FLAG(__HANDLE__, __FLAG__) \
590  ((((__FLAG__) >> 8U) == 5U)? ((((__HANDLE__)->Instance->TSR) & (1U << ((__FLAG__) & CAN_FLAG_MASK))) == (1U << ((__FLAG__) & CAN_FLAG_MASK))): \
591  (((__FLAG__) >> 8U) == 2U)? ((((__HANDLE__)->Instance->RF0R) & (1U << ((__FLAG__) & CAN_FLAG_MASK))) == (1U << ((__FLAG__) & CAN_FLAG_MASK))): \
592  (((__FLAG__) >> 8U) == 4U)? ((((__HANDLE__)->Instance->RF1R) & (1U << ((__FLAG__) & CAN_FLAG_MASK))) == (1U << ((__FLAG__) & CAN_FLAG_MASK))): \
593  (((__FLAG__) >> 8U) == 1U)? ((((__HANDLE__)->Instance->MSR) & (1U << ((__FLAG__) & CAN_FLAG_MASK))) == (1U << ((__FLAG__) & CAN_FLAG_MASK))): \
594  (((__FLAG__) >> 8U) == 3U)? ((((__HANDLE__)->Instance->ESR) & (1U << ((__FLAG__) & CAN_FLAG_MASK))) == (1U << ((__FLAG__) & CAN_FLAG_MASK))): 0U)
595 
620 #define __HAL_CAN_CLEAR_FLAG(__HANDLE__, __FLAG__) \
621  ((((__FLAG__) >> 8U) == 5U)? (((__HANDLE__)->Instance->TSR) = (1U << ((__FLAG__) & CAN_FLAG_MASK))): \
622  (((__FLAG__) >> 8U) == 2U)? (((__HANDLE__)->Instance->RF0R) = (1U << ((__FLAG__) & CAN_FLAG_MASK))): \
623  (((__FLAG__) >> 8U) == 4U)? (((__HANDLE__)->Instance->RF1R) = (1U << ((__FLAG__) & CAN_FLAG_MASK))): \
624  (((__FLAG__) >> 8U) == 1U)? (((__HANDLE__)->Instance->MSR) = (1U << ((__FLAG__) & CAN_FLAG_MASK))): 0U)
625 
630 /* Exported functions --------------------------------------------------------*/
640 /* Initialization and de-initialization functions *****************************/
641 HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef *hcan);
642 HAL_StatusTypeDef HAL_CAN_DeInit(CAN_HandleTypeDef *hcan);
643 void HAL_CAN_MspInit(CAN_HandleTypeDef *hcan);
644 void HAL_CAN_MspDeInit(CAN_HandleTypeDef *hcan);
645 
646 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1
647 /* Callbacks Register/UnRegister functions ***********************************/
648 HAL_StatusTypeDef HAL_CAN_RegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID, void (* pCallback)(CAN_HandleTypeDef *_hcan));
649 HAL_StatusTypeDef HAL_CAN_UnRegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID);
650 
651 #endif /* (USE_HAL_CAN_REGISTER_CALLBACKS) */
652 
661 /* Configuration functions ****************************************************/
662 HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef *hcan, CAN_FilterTypeDef *sFilterConfig);
663 
673 /* Control functions **********************************************************/
674 HAL_StatusTypeDef HAL_CAN_Start(CAN_HandleTypeDef *hcan);
675 HAL_StatusTypeDef HAL_CAN_Stop(CAN_HandleTypeDef *hcan);
676 HAL_StatusTypeDef HAL_CAN_RequestSleep(CAN_HandleTypeDef *hcan);
677 HAL_StatusTypeDef HAL_CAN_WakeUp(CAN_HandleTypeDef *hcan);
678 uint32_t HAL_CAN_IsSleepActive(CAN_HandleTypeDef *hcan);
679 HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, CAN_TxHeaderTypeDef *pHeader, uint8_t aData[], uint32_t *pTxMailbox);
680 HAL_StatusTypeDef HAL_CAN_AbortTxRequest(CAN_HandleTypeDef *hcan, uint32_t TxMailboxes);
681 uint32_t HAL_CAN_GetTxMailboxesFreeLevel(CAN_HandleTypeDef *hcan);
682 uint32_t HAL_CAN_IsTxMessagePending(CAN_HandleTypeDef *hcan, uint32_t TxMailboxes);
683 uint32_t HAL_CAN_GetTxTimestamp(CAN_HandleTypeDef *hcan, uint32_t TxMailbox);
684 HAL_StatusTypeDef HAL_CAN_GetRxMessage(CAN_HandleTypeDef *hcan, uint32_t RxFifo, CAN_RxHeaderTypeDef *pHeader, uint8_t aData[]);
685 uint32_t HAL_CAN_GetRxFifoFillLevel(CAN_HandleTypeDef *hcan, uint32_t RxFifo);
686 
695 /* Interrupts management ******************************************************/
696 HAL_StatusTypeDef HAL_CAN_ActivateNotification(CAN_HandleTypeDef *hcan, uint32_t ActiveITs);
697 HAL_StatusTypeDef HAL_CAN_DeactivateNotification(CAN_HandleTypeDef *hcan, uint32_t InactiveITs);
698 void HAL_CAN_IRQHandler(CAN_HandleTypeDef *hcan);
699 
708 /* Callbacks functions ********************************************************/
709 
710 void HAL_CAN_TxMailbox0CompleteCallback(CAN_HandleTypeDef *hcan);
711 void HAL_CAN_TxMailbox1CompleteCallback(CAN_HandleTypeDef *hcan);
712 void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef *hcan);
713 void HAL_CAN_TxMailbox0AbortCallback(CAN_HandleTypeDef *hcan);
714 void HAL_CAN_TxMailbox1AbortCallback(CAN_HandleTypeDef *hcan);
715 void HAL_CAN_TxMailbox2AbortCallback(CAN_HandleTypeDef *hcan);
716 void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan);
717 void HAL_CAN_RxFifo0FullCallback(CAN_HandleTypeDef *hcan);
718 void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan);
719 void HAL_CAN_RxFifo1FullCallback(CAN_HandleTypeDef *hcan);
720 void HAL_CAN_SleepCallback(CAN_HandleTypeDef *hcan);
721 void HAL_CAN_WakeUpFromRxMsgCallback(CAN_HandleTypeDef *hcan);
722 void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan);
723 
732 /* Peripheral State and Error functions ***************************************/
733 HAL_CAN_StateTypeDef HAL_CAN_GetState(CAN_HandleTypeDef *hcan);
734 uint32_t HAL_CAN_GetError(CAN_HandleTypeDef *hcan);
735 HAL_StatusTypeDef HAL_CAN_ResetError(CAN_HandleTypeDef *hcan);
736 
745 /* Private types -------------------------------------------------------------*/
754 /* Private variables ---------------------------------------------------------*/
763 /* Private constants ---------------------------------------------------------*/
767 #define CAN_FLAG_MASK (0x000000FFU)
768 
772 /* Private Macros -----------------------------------------------------------*/
777 #define IS_CAN_MODE(MODE) (((MODE) == CAN_MODE_NORMAL) || \
778  ((MODE) == CAN_MODE_LOOPBACK)|| \
779  ((MODE) == CAN_MODE_SILENT) || \
780  ((MODE) == CAN_MODE_SILENT_LOOPBACK))
781 #define IS_CAN_SJW(SJW) (((SJW) == CAN_SJW_1TQ) || ((SJW) == CAN_SJW_2TQ) || \
782  ((SJW) == CAN_SJW_3TQ) || ((SJW) == CAN_SJW_4TQ))
783 #define IS_CAN_BS1(BS1) (((BS1) == CAN_BS1_1TQ) || ((BS1) == CAN_BS1_2TQ) || \
784  ((BS1) == CAN_BS1_3TQ) || ((BS1) == CAN_BS1_4TQ) || \
785  ((BS1) == CAN_BS1_5TQ) || ((BS1) == CAN_BS1_6TQ) || \
786  ((BS1) == CAN_BS1_7TQ) || ((BS1) == CAN_BS1_8TQ) || \
787  ((BS1) == CAN_BS1_9TQ) || ((BS1) == CAN_BS1_10TQ)|| \
788  ((BS1) == CAN_BS1_11TQ)|| ((BS1) == CAN_BS1_12TQ)|| \
789  ((BS1) == CAN_BS1_13TQ)|| ((BS1) == CAN_BS1_14TQ)|| \
790  ((BS1) == CAN_BS1_15TQ)|| ((BS1) == CAN_BS1_16TQ))
791 #define IS_CAN_BS2(BS2) (((BS2) == CAN_BS2_1TQ) || ((BS2) == CAN_BS2_2TQ) || \
792  ((BS2) == CAN_BS2_3TQ) || ((BS2) == CAN_BS2_4TQ) || \
793  ((BS2) == CAN_BS2_5TQ) || ((BS2) == CAN_BS2_6TQ) || \
794  ((BS2) == CAN_BS2_7TQ) || ((BS2) == CAN_BS2_8TQ))
795 #define IS_CAN_PRESCALER(PRESCALER) (((PRESCALER) >= 1U) && ((PRESCALER) <= 1024U))
796 #define IS_CAN_FILTER_ID_HALFWORD(HALFWORD) ((HALFWORD) <= 0xFFFFU)
797 #if defined(CAN2)
798 #define IS_CAN_FILTER_BANK_DUAL(BANK) ((BANK) <= 27U)
799 #endif
800 #define IS_CAN_FILTER_BANK_SINGLE(BANK) ((BANK) <= 13U)
801 #define IS_CAN_FILTER_MODE(MODE) (((MODE) == CAN_FILTERMODE_IDMASK) || \
802  ((MODE) == CAN_FILTERMODE_IDLIST))
803 #define IS_CAN_FILTER_SCALE(SCALE) (((SCALE) == CAN_FILTERSCALE_16BIT) || \
804  ((SCALE) == CAN_FILTERSCALE_32BIT))
805 #define IS_CAN_FILTER_ACTIVATION(ACTIVATION) (((ACTIVATION) == CAN_FILTER_DISABLE) || \
806  ((ACTIVATION) == CAN_FILTER_ENABLE))
807 #define IS_CAN_FILTER_FIFO(FIFO) (((FIFO) == CAN_FILTER_FIFO0) || \
808  ((FIFO) == CAN_FILTER_FIFO1))
809 #define IS_CAN_TX_MAILBOX(TRANSMITMAILBOX) (((TRANSMITMAILBOX) == CAN_TX_MAILBOX0 ) || \
810  ((TRANSMITMAILBOX) == CAN_TX_MAILBOX1 ) || \
811  ((TRANSMITMAILBOX) == CAN_TX_MAILBOX2 ))
812 #define IS_CAN_TX_MAILBOX_LIST(TRANSMITMAILBOX) ((TRANSMITMAILBOX) <= (CAN_TX_MAILBOX0 | CAN_TX_MAILBOX1 | CAN_TX_MAILBOX2))
813 #define IS_CAN_STDID(STDID) ((STDID) <= 0x7FFU)
814 #define IS_CAN_EXTID(EXTID) ((EXTID) <= 0x1FFFFFFFU)
815 #define IS_CAN_DLC(DLC) ((DLC) <= 8U)
816 #define IS_CAN_IDTYPE(IDTYPE) (((IDTYPE) == CAN_ID_STD) || \
817  ((IDTYPE) == CAN_ID_EXT))
818 #define IS_CAN_RTR(RTR) (((RTR) == CAN_RTR_DATA) || ((RTR) == CAN_RTR_REMOTE))
819 #define IS_CAN_RX_FIFO(FIFO) (((FIFO) == CAN_RX_FIFO0) || ((FIFO) == CAN_RX_FIFO1))
820 #define IS_CAN_IT(IT) ((IT) <= (CAN_IT_TX_MAILBOX_EMPTY | CAN_IT_RX_FIFO0_MSG_PENDING | \
821  CAN_IT_RX_FIFO0_FULL | CAN_IT_RX_FIFO0_OVERRUN | \
822  CAN_IT_RX_FIFO1_MSG_PENDING | CAN_IT_RX_FIFO1_FULL | \
823  CAN_IT_RX_FIFO1_OVERRUN | CAN_IT_WAKEUP | \
824  CAN_IT_SLEEP_ACK | CAN_IT_ERROR_WARNING | \
825  CAN_IT_ERROR_PASSIVE | CAN_IT_BUSOFF | \
826  CAN_IT_LAST_ERROR_CODE | CAN_IT_ERROR))
827 
831 /* End of private macros -----------------------------------------------------*/
832 
838 #endif /* CAN1 */
839 
843 #ifdef __cplusplus
844 }
845 #endif
846 
847 #endif /* STM32F1xx_HAL_CAN_H */
848 
849 
850 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
This file contains HAL common defines, enumeration, macros and structures definitions.
#define __IO
Definition: core_armv8mbl.h:196
void HAL_CAN_MspInit(CAN_HandleTypeDef *canHandle)
Definition: can.c:52
Controller Area Network.
Definition: stm32f103xb.h:237
HAL_StatusTypeDef
HAL Status structures definition.
Definition: stm32f1xx_hal_def.h:39
void HAL_CAN_MspDeInit(CAN_HandleTypeDef *canHandle)
Definition: can.c:88