Initial commit
This commit is contained in:
		
							
								
								
									
										846
									
								
								Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_can.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										846
									
								
								Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_can.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,846 @@ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file    stm32f7xx_hal_can.h | ||||
|   * @author  MCD Application Team | ||||
|   * @brief   Header file of CAN HAL module. | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * Copyright (c) 2017 STMicroelectronics. | ||||
|   * All rights reserved. | ||||
|   * | ||||
|   * This software is licensed under terms that can be found in the LICENSE file | ||||
|   * in the root directory of this software component. | ||||
|   * If no LICENSE file comes with this software, it is provided AS-IS. | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
|  | ||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | ||||
| #ifndef STM32F7xx_HAL_CAN_H | ||||
| #define STM32F7xx_HAL_CAN_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "stm32f7xx_hal_def.h" | ||||
|  | ||||
| /** @addtogroup STM32F7xx_HAL_Driver | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| #if defined (CAN1) | ||||
| /** @addtogroup CAN | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /* Exported types ------------------------------------------------------------*/ | ||||
| /** @defgroup CAN_Exported_Types CAN Exported Types | ||||
|   * @{ | ||||
|   */ | ||||
| /** | ||||
|   * @brief  HAL State structures definition | ||||
|   */ | ||||
| typedef enum | ||||
| { | ||||
|   HAL_CAN_STATE_RESET             = 0x00U,  /*!< CAN not yet initialized or disabled */ | ||||
|   HAL_CAN_STATE_READY             = 0x01U,  /*!< CAN initialized and ready for use   */ | ||||
|   HAL_CAN_STATE_LISTENING         = 0x02U,  /*!< CAN receive process is ongoing      */ | ||||
|   HAL_CAN_STATE_SLEEP_PENDING     = 0x03U,  /*!< CAN sleep request is pending        */ | ||||
|   HAL_CAN_STATE_SLEEP_ACTIVE      = 0x04U,  /*!< CAN sleep mode is active            */ | ||||
|   HAL_CAN_STATE_ERROR             = 0x05U   /*!< CAN error state                     */ | ||||
|  | ||||
| } HAL_CAN_StateTypeDef; | ||||
|  | ||||
| /** | ||||
|   * @brief  CAN init structure definition | ||||
|   */ | ||||
| typedef struct | ||||
| { | ||||
|   uint32_t Prescaler;                  /*!< Specifies the length of a time quantum. | ||||
|                                             This parameter must be a number between Min_Data = 1 and Max_Data = 1024. */ | ||||
|  | ||||
|   uint32_t Mode;                       /*!< Specifies the CAN operating mode. | ||||
|                                             This parameter can be a value of @ref CAN_operating_mode */ | ||||
|  | ||||
|   uint32_t SyncJumpWidth;              /*!< Specifies the maximum number of time quanta the CAN hardware | ||||
|                                             is allowed to lengthen or shorten a bit to perform resynchronization. | ||||
|                                             This parameter can be a value of @ref CAN_synchronisation_jump_width */ | ||||
|  | ||||
|   uint32_t TimeSeg1;                   /*!< Specifies the number of time quanta in Bit Segment 1. | ||||
|                                             This parameter can be a value of @ref CAN_time_quantum_in_bit_segment_1 */ | ||||
|  | ||||
|   uint32_t TimeSeg2;                   /*!< Specifies the number of time quanta in Bit Segment 2. | ||||
|                                             This parameter can be a value of @ref CAN_time_quantum_in_bit_segment_2 */ | ||||
|  | ||||
|   FunctionalState TimeTriggeredMode;   /*!< Enable or disable the time triggered communication mode. | ||||
|                                             This parameter can be set to ENABLE or DISABLE. */ | ||||
|  | ||||
|   FunctionalState AutoBusOff;          /*!< Enable or disable the automatic bus-off management. | ||||
|                                             This parameter can be set to ENABLE or DISABLE. */ | ||||
|  | ||||
|   FunctionalState AutoWakeUp;          /*!< Enable or disable the automatic wake-up mode. | ||||
|                                             This parameter can be set to ENABLE or DISABLE. */ | ||||
|  | ||||
|   FunctionalState AutoRetransmission;  /*!< Enable or disable the non-automatic retransmission mode. | ||||
|                                             This parameter can be set to ENABLE or DISABLE. */ | ||||
|  | ||||
|   FunctionalState ReceiveFifoLocked;   /*!< Enable or disable the Receive FIFO Locked mode. | ||||
|                                             This parameter can be set to ENABLE or DISABLE. */ | ||||
|  | ||||
|   FunctionalState TransmitFifoPriority;/*!< Enable or disable the transmit FIFO priority. | ||||
|                                             This parameter can be set to ENABLE or DISABLE. */ | ||||
|  | ||||
| } CAN_InitTypeDef; | ||||
|  | ||||
| /** | ||||
|   * @brief  CAN filter configuration structure definition | ||||
|   */ | ||||
| typedef struct | ||||
| { | ||||
|   uint32_t FilterIdHigh;          /*!< Specifies the filter identification number (MSBs for a 32-bit | ||||
|                                        configuration, first one for a 16-bit configuration). | ||||
|                                        This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */ | ||||
|  | ||||
|   uint32_t FilterIdLow;           /*!< Specifies the filter identification number (LSBs for a 32-bit | ||||
|                                        configuration, second one for a 16-bit configuration). | ||||
|                                        This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */ | ||||
|  | ||||
|   uint32_t FilterMaskIdHigh;      /*!< Specifies the filter mask number or identification number, | ||||
|                                        according to the mode (MSBs for a 32-bit configuration, | ||||
|                                        first one for a 16-bit configuration). | ||||
|                                        This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */ | ||||
|  | ||||
|   uint32_t FilterMaskIdLow;       /*!< Specifies the filter mask number or identification number, | ||||
|                                        according to the mode (LSBs for a 32-bit configuration, | ||||
|                                        second one for a 16-bit configuration). | ||||
|                                        This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */ | ||||
|  | ||||
|   uint32_t FilterFIFOAssignment;  /*!< Specifies the FIFO (0 or 1U) which will be assigned to the filter. | ||||
|                                        This parameter can be a value of @ref CAN_filter_FIFO */ | ||||
|  | ||||
|   uint32_t FilterBank;            /*!< Specifies the filter bank which will be initialized. | ||||
|                                        For single CAN instance(14 dedicated filter banks), | ||||
|                                        this parameter must be a number between Min_Data = 0 and Max_Data = 13. | ||||
|                                        For dual CAN instances(28 filter banks shared), | ||||
|                                        this parameter must be a number between Min_Data = 0 and Max_Data = 27. */ | ||||
|  | ||||
|   uint32_t FilterMode;            /*!< Specifies the filter mode to be initialized. | ||||
|                                        This parameter can be a value of @ref CAN_filter_mode */ | ||||
|  | ||||
|   uint32_t FilterScale;           /*!< Specifies the filter scale. | ||||
|                                        This parameter can be a value of @ref CAN_filter_scale */ | ||||
|  | ||||
|   uint32_t FilterActivation;      /*!< Enable or disable the filter. | ||||
|                                        This parameter can be a value of @ref CAN_filter_activation */ | ||||
|  | ||||
|   uint32_t SlaveStartFilterBank;  /*!< Select the start filter bank for the slave CAN instance. | ||||
|                                        For single CAN instances, this parameter is meaningless. | ||||
|                                        For dual CAN instances, all filter banks with lower index are assigned to master | ||||
|                                        CAN instance, whereas all filter banks with greater index are assigned to slave | ||||
|                                        CAN instance. | ||||
|                                        This parameter must be a number between Min_Data = 0 and Max_Data = 27. */ | ||||
|  | ||||
| } CAN_FilterTypeDef; | ||||
|  | ||||
| /** | ||||
|   * @brief  CAN Tx message header structure definition | ||||
|   */ | ||||
| typedef struct | ||||
| { | ||||
|   uint32_t StdId;    /*!< Specifies the standard identifier. | ||||
|                           This parameter must be a number between Min_Data = 0 and Max_Data = 0x7FF. */ | ||||
|  | ||||
|   uint32_t ExtId;    /*!< Specifies the extended identifier. | ||||
|                           This parameter must be a number between Min_Data = 0 and Max_Data = 0x1FFFFFFF. */ | ||||
|  | ||||
|   uint32_t IDE;      /*!< Specifies the type of identifier for the message that will be transmitted. | ||||
|                           This parameter can be a value of @ref CAN_identifier_type */ | ||||
|  | ||||
|   uint32_t RTR;      /*!< Specifies the type of frame for the message that will be transmitted. | ||||
|                           This parameter can be a value of @ref CAN_remote_transmission_request */ | ||||
|  | ||||
|   uint32_t DLC;      /*!< Specifies the length of the frame that will be transmitted. | ||||
|                           This parameter must be a number between Min_Data = 0 and Max_Data = 8. */ | ||||
|  | ||||
|   FunctionalState TransmitGlobalTime; /*!< Specifies whether the timestamp counter value captured on start | ||||
|                           of frame transmission, is sent in DATA6 and DATA7 replacing pData[6] and pData[7]. | ||||
|                           @note: Time Triggered Communication Mode must be enabled. | ||||
|                           @note: DLC must be programmed as 8 bytes, in order these 2 bytes are sent. | ||||
|                           This parameter can be set to ENABLE or DISABLE. */ | ||||
|  | ||||
| } CAN_TxHeaderTypeDef; | ||||
|  | ||||
| /** | ||||
|   * @brief  CAN Rx message header structure definition | ||||
|   */ | ||||
| typedef struct | ||||
| { | ||||
|   uint32_t StdId;    /*!< Specifies the standard identifier. | ||||
|                           This parameter must be a number between Min_Data = 0 and Max_Data = 0x7FF. */ | ||||
|  | ||||
|   uint32_t ExtId;    /*!< Specifies the extended identifier. | ||||
|                           This parameter must be a number between Min_Data = 0 and Max_Data = 0x1FFFFFFF. */ | ||||
|  | ||||
|   uint32_t IDE;      /*!< Specifies the type of identifier for the message that will be transmitted. | ||||
|                           This parameter can be a value of @ref CAN_identifier_type */ | ||||
|  | ||||
|   uint32_t RTR;      /*!< Specifies the type of frame for the message that will be transmitted. | ||||
|                           This parameter can be a value of @ref CAN_remote_transmission_request */ | ||||
|  | ||||
|   uint32_t DLC;      /*!< Specifies the length of the frame that will be transmitted. | ||||
|                           This parameter must be a number between Min_Data = 0 and Max_Data = 8. */ | ||||
|  | ||||
|   uint32_t Timestamp; /*!< Specifies the timestamp counter value captured on start of frame reception. | ||||
|                           @note: Time Triggered Communication Mode must be enabled. | ||||
|                           This parameter must be a number between Min_Data = 0 and Max_Data = 0xFFFF. */ | ||||
|  | ||||
|   uint32_t FilterMatchIndex; /*!< Specifies the index of matching acceptance filter element. | ||||
|                           This parameter must be a number between Min_Data = 0 and Max_Data = 0xFF. */ | ||||
|  | ||||
| } CAN_RxHeaderTypeDef; | ||||
|  | ||||
| /** | ||||
|   * @brief  CAN handle Structure definition | ||||
|   */ | ||||
| typedef struct __CAN_HandleTypeDef | ||||
| { | ||||
|   CAN_TypeDef                 *Instance;                 /*!< Register base address */ | ||||
|  | ||||
|   CAN_InitTypeDef             Init;                      /*!< CAN required parameters */ | ||||
|  | ||||
|   __IO HAL_CAN_StateTypeDef   State;                     /*!< CAN communication state */ | ||||
|  | ||||
|   __IO uint32_t               ErrorCode;                 /*!< CAN Error code. | ||||
|                                                               This parameter can be a value of @ref CAN_Error_Code */ | ||||
|  | ||||
| #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 | ||||
|   void (* TxMailbox0CompleteCallback)(struct __CAN_HandleTypeDef *hcan);/*!< CAN Tx Mailbox 0 complete callback    */ | ||||
|   void (* TxMailbox1CompleteCallback)(struct __CAN_HandleTypeDef *hcan);/*!< CAN Tx Mailbox 1 complete callback    */ | ||||
|   void (* TxMailbox2CompleteCallback)(struct __CAN_HandleTypeDef *hcan);/*!< CAN Tx Mailbox 2 complete callback    */ | ||||
|   void (* TxMailbox0AbortCallback)(struct __CAN_HandleTypeDef *hcan);   /*!< CAN Tx Mailbox 0 abort callback       */ | ||||
|   void (* TxMailbox1AbortCallback)(struct __CAN_HandleTypeDef *hcan);   /*!< CAN Tx Mailbox 1 abort callback       */ | ||||
|   void (* TxMailbox2AbortCallback)(struct __CAN_HandleTypeDef *hcan);   /*!< CAN Tx Mailbox 2 abort callback       */ | ||||
|   void (* RxFifo0MsgPendingCallback)(struct __CAN_HandleTypeDef *hcan); /*!< CAN Rx FIFO 0 msg pending callback    */ | ||||
|   void (* RxFifo0FullCallback)(struct __CAN_HandleTypeDef *hcan);       /*!< CAN Rx FIFO 0 full callback           */ | ||||
|   void (* RxFifo1MsgPendingCallback)(struct __CAN_HandleTypeDef *hcan); /*!< CAN Rx FIFO 1 msg pending callback    */ | ||||
|   void (* RxFifo1FullCallback)(struct __CAN_HandleTypeDef *hcan);       /*!< CAN Rx FIFO 1 full callback           */ | ||||
|   void (* SleepCallback)(struct __CAN_HandleTypeDef *hcan);             /*!< CAN Sleep callback                    */ | ||||
|   void (* WakeUpFromRxMsgCallback)(struct __CAN_HandleTypeDef *hcan);   /*!< CAN Wake Up from Rx msg callback      */ | ||||
|   void (* ErrorCallback)(struct __CAN_HandleTypeDef *hcan);             /*!< CAN Error callback                    */ | ||||
|  | ||||
|   void (* MspInitCallback)(struct __CAN_HandleTypeDef *hcan);           /*!< CAN Msp Init callback                 */ | ||||
|   void (* MspDeInitCallback)(struct __CAN_HandleTypeDef *hcan);         /*!< CAN Msp DeInit callback               */ | ||||
|  | ||||
| #endif /* (USE_HAL_CAN_REGISTER_CALLBACKS) */ | ||||
| } CAN_HandleTypeDef; | ||||
|  | ||||
| #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 | ||||
| /** | ||||
|   * @brief  HAL CAN common Callback ID enumeration definition | ||||
|   */ | ||||
| typedef enum | ||||
| { | ||||
|   HAL_CAN_TX_MAILBOX0_COMPLETE_CB_ID       = 0x00U,    /*!< CAN Tx Mailbox 0 complete callback ID         */ | ||||
|   HAL_CAN_TX_MAILBOX1_COMPLETE_CB_ID       = 0x01U,    /*!< CAN Tx Mailbox 1 complete callback ID         */ | ||||
|   HAL_CAN_TX_MAILBOX2_COMPLETE_CB_ID       = 0x02U,    /*!< CAN Tx Mailbox 2 complete callback ID         */ | ||||
|   HAL_CAN_TX_MAILBOX0_ABORT_CB_ID          = 0x03U,    /*!< CAN Tx Mailbox 0 abort callback ID            */ | ||||
|   HAL_CAN_TX_MAILBOX1_ABORT_CB_ID          = 0x04U,    /*!< CAN Tx Mailbox 1 abort callback ID            */ | ||||
|   HAL_CAN_TX_MAILBOX2_ABORT_CB_ID          = 0x05U,    /*!< CAN Tx Mailbox 2 abort callback ID            */ | ||||
|   HAL_CAN_RX_FIFO0_MSG_PENDING_CB_ID       = 0x06U,    /*!< CAN Rx FIFO 0 message pending callback ID     */ | ||||
|   HAL_CAN_RX_FIFO0_FULL_CB_ID              = 0x07U,    /*!< CAN Rx FIFO 0 full callback ID                */ | ||||
|   HAL_CAN_RX_FIFO1_MSG_PENDING_CB_ID       = 0x08U,    /*!< CAN Rx FIFO 1 message pending callback ID     */ | ||||
|   HAL_CAN_RX_FIFO1_FULL_CB_ID              = 0x09U,    /*!< CAN Rx FIFO 1 full callback ID                */ | ||||
|   HAL_CAN_SLEEP_CB_ID                      = 0x0AU,    /*!< CAN Sleep callback ID                         */ | ||||
|   HAL_CAN_WAKEUP_FROM_RX_MSG_CB_ID         = 0x0BU,    /*!< CAN Wake Up from Rx msg callback ID          */ | ||||
|   HAL_CAN_ERROR_CB_ID                      = 0x0CU,    /*!< CAN Error callback ID                         */ | ||||
|  | ||||
|   HAL_CAN_MSPINIT_CB_ID                    = 0x0DU,    /*!< CAN MspInit callback ID                       */ | ||||
|   HAL_CAN_MSPDEINIT_CB_ID                  = 0x0EU,    /*!< CAN MspDeInit callback ID                     */ | ||||
|  | ||||
| } HAL_CAN_CallbackIDTypeDef; | ||||
|  | ||||
| /** | ||||
|   * @brief  HAL CAN Callback pointer definition | ||||
|   */ | ||||
| typedef  void (*pCAN_CallbackTypeDef)(CAN_HandleTypeDef *hcan); /*!< pointer to a CAN callback function   */ | ||||
|  | ||||
| #endif /* USE_HAL_CAN_REGISTER_CALLBACKS */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /* Exported constants --------------------------------------------------------*/ | ||||
|  | ||||
| /** @defgroup CAN_Exported_Constants CAN Exported Constants | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_Error_Code CAN Error Code | ||||
|   * @{ | ||||
|   */ | ||||
| #define HAL_CAN_ERROR_NONE            (0x00000000U)  /*!< No error                                             */ | ||||
| #define HAL_CAN_ERROR_EWG             (0x00000001U)  /*!< Protocol Error Warning                               */ | ||||
| #define HAL_CAN_ERROR_EPV             (0x00000002U)  /*!< Error Passive                                        */ | ||||
| #define HAL_CAN_ERROR_BOF             (0x00000004U)  /*!< Bus-off error                                        */ | ||||
| #define HAL_CAN_ERROR_STF             (0x00000008U)  /*!< Stuff error                                          */ | ||||
| #define HAL_CAN_ERROR_FOR             (0x00000010U)  /*!< Form error                                           */ | ||||
| #define HAL_CAN_ERROR_ACK             (0x00000020U)  /*!< Acknowledgment error                                 */ | ||||
| #define HAL_CAN_ERROR_BR              (0x00000040U)  /*!< Bit recessive error                                  */ | ||||
| #define HAL_CAN_ERROR_BD              (0x00000080U)  /*!< Bit dominant error                                   */ | ||||
| #define HAL_CAN_ERROR_CRC             (0x00000100U)  /*!< CRC error                                            */ | ||||
| #define HAL_CAN_ERROR_RX_FOV0         (0x00000200U)  /*!< Rx FIFO0 overrun error                               */ | ||||
| #define HAL_CAN_ERROR_RX_FOV1         (0x00000400U)  /*!< Rx FIFO1 overrun error                               */ | ||||
| #define HAL_CAN_ERROR_TX_ALST0        (0x00000800U)  /*!< TxMailbox 0 transmit failure due to arbitration lost */ | ||||
| #define HAL_CAN_ERROR_TX_TERR0        (0x00001000U)  /*!< TxMailbox 0 transmit failure due to transmit error    */ | ||||
| #define HAL_CAN_ERROR_TX_ALST1        (0x00002000U)  /*!< TxMailbox 1 transmit failure due to arbitration lost */ | ||||
| #define HAL_CAN_ERROR_TX_TERR1        (0x00004000U)  /*!< TxMailbox 1 transmit failure due to transmit error    */ | ||||
| #define HAL_CAN_ERROR_TX_ALST2        (0x00008000U)  /*!< TxMailbox 2 transmit failure due to arbitration lost */ | ||||
| #define HAL_CAN_ERROR_TX_TERR2        (0x00010000U)  /*!< TxMailbox 2 transmit failure due to transmit error    */ | ||||
| #define HAL_CAN_ERROR_TIMEOUT         (0x00020000U)  /*!< Timeout error                                        */ | ||||
| #define HAL_CAN_ERROR_NOT_INITIALIZED (0x00040000U)  /*!< Peripheral not initialized                           */ | ||||
| #define HAL_CAN_ERROR_NOT_READY       (0x00080000U)  /*!< Peripheral not ready                                 */ | ||||
| #define HAL_CAN_ERROR_NOT_STARTED     (0x00100000U)  /*!< Peripheral not started                               */ | ||||
| #define HAL_CAN_ERROR_PARAM           (0x00200000U)  /*!< Parameter error                                      */ | ||||
|  | ||||
| #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 | ||||
| #define HAL_CAN_ERROR_INVALID_CALLBACK (0x00400000U) /*!< Invalid Callback error                               */ | ||||
| #endif /* USE_HAL_CAN_REGISTER_CALLBACKS */ | ||||
| #define HAL_CAN_ERROR_INTERNAL        (0x00800000U)  /*!< Internal error                                       */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_InitStatus CAN InitStatus | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_INITSTATUS_FAILED       (0x00000000U)  /*!< CAN initialization failed */ | ||||
| #define CAN_INITSTATUS_SUCCESS      (0x00000001U)  /*!< CAN initialization OK     */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_operating_mode CAN Operating Mode | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_MODE_NORMAL             (0x00000000U)                              /*!< Normal mode   */ | ||||
| #define CAN_MODE_LOOPBACK           ((uint32_t)CAN_BTR_LBKM)                   /*!< Loopback mode */ | ||||
| #define CAN_MODE_SILENT             ((uint32_t)CAN_BTR_SILM)                   /*!< Silent mode   */ | ||||
| #define CAN_MODE_SILENT_LOOPBACK    ((uint32_t)(CAN_BTR_LBKM | CAN_BTR_SILM))  /*!< Loopback combined with silent mode */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
|  | ||||
| /** @defgroup CAN_synchronisation_jump_width CAN Synchronization Jump Width | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_SJW_1TQ                 (0x00000000U)              /*!< 1 time quantum */ | ||||
| #define CAN_SJW_2TQ                 ((uint32_t)CAN_BTR_SJW_0)  /*!< 2 time quantum */ | ||||
| #define CAN_SJW_3TQ                 ((uint32_t)CAN_BTR_SJW_1)  /*!< 3 time quantum */ | ||||
| #define CAN_SJW_4TQ                 ((uint32_t)CAN_BTR_SJW)    /*!< 4 time quantum */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_time_quantum_in_bit_segment_1 CAN Time Quantum in Bit Segment 1 | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_BS1_1TQ                 (0x00000000U)                                                /*!< 1 time quantum  */ | ||||
| #define CAN_BS1_2TQ                 ((uint32_t)CAN_BTR_TS1_0)                                    /*!< 2 time quantum  */ | ||||
| #define CAN_BS1_3TQ                 ((uint32_t)CAN_BTR_TS1_1)                                    /*!< 3 time quantum  */ | ||||
| #define CAN_BS1_4TQ                 ((uint32_t)(CAN_BTR_TS1_1 | CAN_BTR_TS1_0))                  /*!< 4 time quantum  */ | ||||
| #define CAN_BS1_5TQ                 ((uint32_t)CAN_BTR_TS1_2)                                    /*!< 5 time quantum  */ | ||||
| #define CAN_BS1_6TQ                 ((uint32_t)(CAN_BTR_TS1_2 | CAN_BTR_TS1_0))                  /*!< 6 time quantum  */ | ||||
| #define CAN_BS1_7TQ                 ((uint32_t)(CAN_BTR_TS1_2 | CAN_BTR_TS1_1))                  /*!< 7 time quantum  */ | ||||
| #define CAN_BS1_8TQ                 ((uint32_t)(CAN_BTR_TS1_2 | CAN_BTR_TS1_1 | CAN_BTR_TS1_0))  /*!< 8 time quantum  */ | ||||
| #define CAN_BS1_9TQ                 ((uint32_t)CAN_BTR_TS1_3)                                    /*!< 9 time quantum  */ | ||||
| #define CAN_BS1_10TQ                ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_0))                  /*!< 10 time quantum */ | ||||
| #define CAN_BS1_11TQ                ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_1))                  /*!< 11 time quantum */ | ||||
| #define CAN_BS1_12TQ                ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_1 | CAN_BTR_TS1_0))  /*!< 12 time quantum */ | ||||
| #define CAN_BS1_13TQ                ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_2))                  /*!< 13 time quantum */ | ||||
| #define CAN_BS1_14TQ                ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_2 | CAN_BTR_TS1_0))  /*!< 14 time quantum */ | ||||
| #define CAN_BS1_15TQ                ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_2 | CAN_BTR_TS1_1))  /*!< 15 time quantum */ | ||||
| #define CAN_BS1_16TQ                ((uint32_t)CAN_BTR_TS1) /*!< 16 time quantum */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_time_quantum_in_bit_segment_2 CAN Time Quantum in Bit Segment 2 | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_BS2_1TQ                 (0x00000000U)                                /*!< 1 time quantum */ | ||||
| #define CAN_BS2_2TQ                 ((uint32_t)CAN_BTR_TS2_0)                    /*!< 2 time quantum */ | ||||
| #define CAN_BS2_3TQ                 ((uint32_t)CAN_BTR_TS2_1)                    /*!< 3 time quantum */ | ||||
| #define CAN_BS2_4TQ                 ((uint32_t)(CAN_BTR_TS2_1 | CAN_BTR_TS2_0))  /*!< 4 time quantum */ | ||||
| #define CAN_BS2_5TQ                 ((uint32_t)CAN_BTR_TS2_2)                    /*!< 5 time quantum */ | ||||
| #define CAN_BS2_6TQ                 ((uint32_t)(CAN_BTR_TS2_2 | CAN_BTR_TS2_0))  /*!< 6 time quantum */ | ||||
| #define CAN_BS2_7TQ                 ((uint32_t)(CAN_BTR_TS2_2 | CAN_BTR_TS2_1))  /*!< 7 time quantum */ | ||||
| #define CAN_BS2_8TQ                 ((uint32_t)CAN_BTR_TS2)                      /*!< 8 time quantum */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_filter_mode CAN Filter Mode | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_FILTERMODE_IDMASK       (0x00000000U)  /*!< Identifier mask mode */ | ||||
| #define CAN_FILTERMODE_IDLIST       (0x00000001U)  /*!< Identifier list mode */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_filter_scale CAN Filter Scale | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_FILTERSCALE_16BIT       (0x00000000U)  /*!< Two 16-bit filters */ | ||||
| #define CAN_FILTERSCALE_32BIT       (0x00000001U)  /*!< One 32-bit filter  */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_filter_activation CAN Filter Activation | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_FILTER_DISABLE          (0x00000000U)  /*!< Disable filter */ | ||||
| #define CAN_FILTER_ENABLE           (0x00000001U)  /*!< Enable filter  */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_filter_FIFO CAN Filter FIFO | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_FILTER_FIFO0            (0x00000000U)  /*!< Filter FIFO 0 assignment for filter x */ | ||||
| #define CAN_FILTER_FIFO1            (0x00000001U)  /*!< Filter FIFO 1 assignment for filter x */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_identifier_type CAN Identifier Type | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_ID_STD                  (0x00000000U)  /*!< Standard Id */ | ||||
| #define CAN_ID_EXT                  (0x00000004U)  /*!< Extended Id */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_remote_transmission_request CAN Remote Transmission Request | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_RTR_DATA                (0x00000000U)  /*!< Data frame   */ | ||||
| #define CAN_RTR_REMOTE              (0x00000002U)  /*!< Remote frame */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_receive_FIFO_number CAN Receive FIFO Number | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_RX_FIFO0                (0x00000000U)  /*!< CAN receive FIFO 0 */ | ||||
| #define CAN_RX_FIFO1                (0x00000001U)  /*!< CAN receive FIFO 1 */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_Tx_Mailboxes CAN Tx Mailboxes | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_TX_MAILBOX0             (0x00000001U)  /*!< Tx Mailbox 0  */ | ||||
| #define CAN_TX_MAILBOX1             (0x00000002U)  /*!< Tx Mailbox 1  */ | ||||
| #define CAN_TX_MAILBOX2             (0x00000004U)  /*!< Tx Mailbox 2  */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup CAN_flags CAN Flags | ||||
|   * @{ | ||||
|   */ | ||||
| /* Transmit Flags */ | ||||
| #define CAN_FLAG_RQCP0              (0x00000500U)  /*!< Request complete MailBox 0 flag   */ | ||||
| #define CAN_FLAG_TXOK0              (0x00000501U)  /*!< Transmission OK MailBox 0 flag    */ | ||||
| #define CAN_FLAG_ALST0              (0x00000502U)  /*!< Arbitration Lost MailBox 0 flag   */ | ||||
| #define CAN_FLAG_TERR0              (0x00000503U)  /*!< Transmission error MailBox 0 flag */ | ||||
| #define CAN_FLAG_RQCP1              (0x00000508U)  /*!< Request complete MailBox1 flag    */ | ||||
| #define CAN_FLAG_TXOK1              (0x00000509U)  /*!< Transmission OK MailBox 1 flag    */ | ||||
| #define CAN_FLAG_ALST1              (0x0000050AU)  /*!< Arbitration Lost MailBox 1 flag   */ | ||||
| #define CAN_FLAG_TERR1              (0x0000050BU)  /*!< Transmission error MailBox 1 flag */ | ||||
| #define CAN_FLAG_RQCP2              (0x00000510U)  /*!< Request complete MailBox2 flag    */ | ||||
| #define CAN_FLAG_TXOK2              (0x00000511U)  /*!< Transmission OK MailBox 2 flag    */ | ||||
| #define CAN_FLAG_ALST2              (0x00000512U)  /*!< Arbitration Lost MailBox 2 flag   */ | ||||
| #define CAN_FLAG_TERR2              (0x00000513U)  /*!< Transmission error MailBox 2 flag */ | ||||
| #define CAN_FLAG_TME0               (0x0000051AU)  /*!< Transmit mailbox 0 empty flag     */ | ||||
| #define CAN_FLAG_TME1               (0x0000051BU)  /*!< Transmit mailbox 1 empty flag     */ | ||||
| #define CAN_FLAG_TME2               (0x0000051CU)  /*!< Transmit mailbox 2 empty flag     */ | ||||
| #define CAN_FLAG_LOW0               (0x0000051DU)  /*!< Lowest priority mailbox 0 flag    */ | ||||
| #define CAN_FLAG_LOW1               (0x0000051EU)  /*!< Lowest priority mailbox 1 flag    */ | ||||
| #define CAN_FLAG_LOW2               (0x0000051FU)  /*!< Lowest priority mailbox 2 flag    */ | ||||
|  | ||||
| /* Receive Flags */ | ||||
| #define CAN_FLAG_FF0                (0x00000203U)  /*!< RX FIFO 0 Full flag               */ | ||||
| #define CAN_FLAG_FOV0               (0x00000204U)  /*!< RX FIFO 0 Overrun flag            */ | ||||
| #define CAN_FLAG_FF1                (0x00000403U)  /*!< RX FIFO 1 Full flag               */ | ||||
| #define CAN_FLAG_FOV1               (0x00000404U)  /*!< RX FIFO 1 Overrun flag            */ | ||||
|  | ||||
| /* Operating Mode Flags */ | ||||
| #define CAN_FLAG_INAK               (0x00000100U)  /*!< Initialization acknowledge flag   */ | ||||
| #define CAN_FLAG_SLAK               (0x00000101U)  /*!< Sleep acknowledge flag            */ | ||||
| #define CAN_FLAG_ERRI               (0x00000102U)  /*!< Error flag                        */ | ||||
| #define CAN_FLAG_WKU                (0x00000103U)  /*!< Wake up interrupt flag            */ | ||||
| #define CAN_FLAG_SLAKI              (0x00000104U)  /*!< Sleep acknowledge interrupt flag  */ | ||||
|  | ||||
| /* Error Flags */ | ||||
| #define CAN_FLAG_EWG                (0x00000300U)  /*!< Error warning flag                */ | ||||
| #define CAN_FLAG_EPV                (0x00000301U)  /*!< Error passive flag                */ | ||||
| #define CAN_FLAG_BOF                (0x00000302U)  /*!< Bus-Off flag                      */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
|  | ||||
| /** @defgroup CAN_Interrupts CAN Interrupts | ||||
|   * @{ | ||||
|   */ | ||||
| /* Transmit Interrupt */ | ||||
| #define CAN_IT_TX_MAILBOX_EMPTY     ((uint32_t)CAN_IER_TMEIE)   /*!< Transmit mailbox empty interrupt */ | ||||
|  | ||||
| /* Receive Interrupts */ | ||||
| #define CAN_IT_RX_FIFO0_MSG_PENDING ((uint32_t)CAN_IER_FMPIE0)  /*!< FIFO 0 message pending interrupt */ | ||||
| #define CAN_IT_RX_FIFO0_FULL        ((uint32_t)CAN_IER_FFIE0)   /*!< FIFO 0 full interrupt            */ | ||||
| #define CAN_IT_RX_FIFO0_OVERRUN     ((uint32_t)CAN_IER_FOVIE0)  /*!< FIFO 0 overrun interrupt         */ | ||||
| #define CAN_IT_RX_FIFO1_MSG_PENDING ((uint32_t)CAN_IER_FMPIE1)  /*!< FIFO 1 message pending interrupt */ | ||||
| #define CAN_IT_RX_FIFO1_FULL        ((uint32_t)CAN_IER_FFIE1)   /*!< FIFO 1 full interrupt            */ | ||||
| #define CAN_IT_RX_FIFO1_OVERRUN     ((uint32_t)CAN_IER_FOVIE1)  /*!< FIFO 1 overrun interrupt         */ | ||||
|  | ||||
| /* Operating Mode Interrupts */ | ||||
| #define CAN_IT_WAKEUP               ((uint32_t)CAN_IER_WKUIE)   /*!< Wake-up interrupt                */ | ||||
| #define CAN_IT_SLEEP_ACK            ((uint32_t)CAN_IER_SLKIE)   /*!< Sleep acknowledge interrupt      */ | ||||
|  | ||||
| /* Error Interrupts */ | ||||
| #define CAN_IT_ERROR_WARNING        ((uint32_t)CAN_IER_EWGIE)   /*!< Error warning interrupt          */ | ||||
| #define CAN_IT_ERROR_PASSIVE        ((uint32_t)CAN_IER_EPVIE)   /*!< Error passive interrupt          */ | ||||
| #define CAN_IT_BUSOFF               ((uint32_t)CAN_IER_BOFIE)   /*!< Bus-off interrupt                */ | ||||
| #define CAN_IT_LAST_ERROR_CODE      ((uint32_t)CAN_IER_LECIE)   /*!< Last error code interrupt        */ | ||||
| #define CAN_IT_ERROR                ((uint32_t)CAN_IER_ERRIE)   /*!< Error Interrupt                  */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /* Exported macros -----------------------------------------------------------*/ | ||||
| /** @defgroup CAN_Exported_Macros CAN Exported Macros | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** @brief  Reset CAN handle state | ||||
|   * @param  __HANDLE__ CAN handle. | ||||
|   * @retval None | ||||
|   */ | ||||
| #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 | ||||
| #define __HAL_CAN_RESET_HANDLE_STATE(__HANDLE__) do{                                              \ | ||||
|                                                      (__HANDLE__)->State = HAL_CAN_STATE_RESET;   \ | ||||
|                                                      (__HANDLE__)->MspInitCallback = NULL;        \ | ||||
|                                                      (__HANDLE__)->MspDeInitCallback = NULL;      \ | ||||
|                                                    } while(0) | ||||
| #else | ||||
| #define __HAL_CAN_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CAN_STATE_RESET) | ||||
| #endif /*USE_HAL_CAN_REGISTER_CALLBACKS */ | ||||
|  | ||||
| /** | ||||
|   * @brief  Enable the specified CAN interrupts. | ||||
|   * @param  __HANDLE__ CAN handle. | ||||
|   * @param  __INTERRUPT__ CAN Interrupt sources to enable. | ||||
|   *           This parameter can be any combination of @arg CAN_Interrupts | ||||
|   * @retval None | ||||
|   */ | ||||
| #define __HAL_CAN_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IER) |= (__INTERRUPT__)) | ||||
|  | ||||
| /** | ||||
|   * @brief  Disable the specified CAN interrupts. | ||||
|   * @param  __HANDLE__ CAN handle. | ||||
|   * @param  __INTERRUPT__ CAN Interrupt sources to disable. | ||||
|   *           This parameter can be any combination of @arg CAN_Interrupts | ||||
|   * @retval None | ||||
|   */ | ||||
| #define __HAL_CAN_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IER) &= ~(__INTERRUPT__)) | ||||
|  | ||||
| /** @brief  Check if the specified CAN interrupt source is enabled or disabled. | ||||
|   * @param  __HANDLE__ specifies the CAN Handle. | ||||
|   * @param  __INTERRUPT__ specifies the CAN interrupt source to check. | ||||
|   *           This parameter can be a value of @arg CAN_Interrupts | ||||
|   * @retval The state of __IT__ (TRUE or FALSE). | ||||
|   */ | ||||
| #define __HAL_CAN_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IER) & (__INTERRUPT__)) | ||||
|  | ||||
| /** @brief  Check whether the specified CAN flag is set or not. | ||||
|   * @param  __HANDLE__ specifies the CAN Handle. | ||||
|   * @param  __FLAG__ specifies the flag to check. | ||||
|   *         This parameter can be one of @arg CAN_flags | ||||
|   * @retval The state of __FLAG__ (TRUE or FALSE). | ||||
|   */ | ||||
| #define __HAL_CAN_GET_FLAG(__HANDLE__, __FLAG__) \ | ||||
|   ((((__FLAG__) >> 8U) == 5U)? ((((__HANDLE__)->Instance->TSR) & (1U << ((__FLAG__) & CAN_FLAG_MASK))) == (1U << ((__FLAG__) & CAN_FLAG_MASK))): \ | ||||
|    (((__FLAG__) >> 8U) == 2U)? ((((__HANDLE__)->Instance->RF0R) & (1U << ((__FLAG__) & CAN_FLAG_MASK))) == (1U << ((__FLAG__) & CAN_FLAG_MASK))): \ | ||||
|    (((__FLAG__) >> 8U) == 4U)? ((((__HANDLE__)->Instance->RF1R) & (1U << ((__FLAG__) & CAN_FLAG_MASK))) == (1U << ((__FLAG__) & CAN_FLAG_MASK))): \ | ||||
|    (((__FLAG__) >> 8U) == 1U)? ((((__HANDLE__)->Instance->MSR) & (1U << ((__FLAG__) & CAN_FLAG_MASK))) == (1U << ((__FLAG__) & CAN_FLAG_MASK))): \ | ||||
|    (((__FLAG__) >> 8U) == 3U)? ((((__HANDLE__)->Instance->ESR) & (1U << ((__FLAG__) & CAN_FLAG_MASK))) == (1U << ((__FLAG__) & CAN_FLAG_MASK))): 0U) | ||||
|  | ||||
| /** @brief  Clear the specified CAN pending flag. | ||||
|   * @param  __HANDLE__ specifies the CAN Handle. | ||||
|   * @param  __FLAG__ specifies the flag to check. | ||||
|   *         This parameter can be one of the following values: | ||||
|   *            @arg CAN_FLAG_RQCP0: Request complete MailBox 0 Flag | ||||
|   *            @arg CAN_FLAG_TXOK0: Transmission OK MailBox 0 Flag | ||||
|   *            @arg CAN_FLAG_ALST0: Arbitration Lost MailBox 0 Flag | ||||
|   *            @arg CAN_FLAG_TERR0: Transmission error MailBox 0 Flag | ||||
|   *            @arg CAN_FLAG_RQCP1: Request complete MailBox 1 Flag | ||||
|   *            @arg CAN_FLAG_TXOK1: Transmission OK MailBox 1 Flag | ||||
|   *            @arg CAN_FLAG_ALST1: Arbitration Lost MailBox 1 Flag | ||||
|   *            @arg CAN_FLAG_TERR1: Transmission error MailBox 1 Flag | ||||
|   *            @arg CAN_FLAG_RQCP2: Request complete MailBox 2 Flag | ||||
|   *            @arg CAN_FLAG_TXOK2: Transmission OK MailBox 2 Flag | ||||
|   *            @arg CAN_FLAG_ALST2: Arbitration Lost MailBox 2 Flag | ||||
|   *            @arg CAN_FLAG_TERR2: Transmission error MailBox 2 Flag | ||||
|   *            @arg CAN_FLAG_FF0:   RX FIFO 0 Full Flag | ||||
|   *            @arg CAN_FLAG_FOV0:  RX FIFO 0 Overrun Flag | ||||
|   *            @arg CAN_FLAG_FF1:   RX FIFO 1 Full Flag | ||||
|   *            @arg CAN_FLAG_FOV1:  RX FIFO 1 Overrun Flag | ||||
|   *            @arg CAN_FLAG_WKUI:  Wake up Interrupt Flag | ||||
|   *            @arg CAN_FLAG_SLAKI: Sleep acknowledge Interrupt Flag | ||||
|   * @retval None | ||||
|   */ | ||||
| #define __HAL_CAN_CLEAR_FLAG(__HANDLE__, __FLAG__) \ | ||||
|   ((((__FLAG__) >> 8U) == 5U)? (((__HANDLE__)->Instance->TSR) = (1U << ((__FLAG__) & CAN_FLAG_MASK))): \ | ||||
|    (((__FLAG__) >> 8U) == 2U)? (((__HANDLE__)->Instance->RF0R) = (1U << ((__FLAG__) & CAN_FLAG_MASK))): \ | ||||
|    (((__FLAG__) >> 8U) == 4U)? (((__HANDLE__)->Instance->RF1R) = (1U << ((__FLAG__) & CAN_FLAG_MASK))): \ | ||||
|    (((__FLAG__) >> 8U) == 1U)? (((__HANDLE__)->Instance->MSR) = (1U << ((__FLAG__) & CAN_FLAG_MASK))): 0U) | ||||
|  | ||||
| /** | ||||
|  * @} | ||||
|  */ | ||||
|  | ||||
| /* Exported functions --------------------------------------------------------*/ | ||||
| /** @addtogroup CAN_Exported_Functions CAN Exported Functions | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup CAN_Exported_Functions_Group1 Initialization and de-initialization functions | ||||
|  *  @brief    Initialization and Configuration functions | ||||
|  * @{ | ||||
|  */ | ||||
|  | ||||
| /* Initialization and de-initialization functions *****************************/ | ||||
| HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef *hcan); | ||||
| HAL_StatusTypeDef HAL_CAN_DeInit(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_MspInit(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_MspDeInit(CAN_HandleTypeDef *hcan); | ||||
|  | ||||
| #if USE_HAL_CAN_REGISTER_CALLBACKS == 1 | ||||
| /* Callbacks Register/UnRegister functions  ***********************************/ | ||||
| HAL_StatusTypeDef HAL_CAN_RegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID, void (* pCallback)(CAN_HandleTypeDef *_hcan)); | ||||
| HAL_StatusTypeDef HAL_CAN_UnRegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID); | ||||
|  | ||||
| #endif /* (USE_HAL_CAN_REGISTER_CALLBACKS) */ | ||||
| /** | ||||
|  * @} | ||||
|  */ | ||||
|  | ||||
| /** @addtogroup CAN_Exported_Functions_Group2 Configuration functions | ||||
|  *  @brief    Configuration functions | ||||
|  * @{ | ||||
|  */ | ||||
|  | ||||
| /* Configuration functions ****************************************************/ | ||||
| HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef *hcan, CAN_FilterTypeDef *sFilterConfig); | ||||
|  | ||||
| /** | ||||
|  * @} | ||||
|  */ | ||||
|  | ||||
| /** @addtogroup CAN_Exported_Functions_Group3 Control functions | ||||
|  *  @brief    Control functions | ||||
|  * @{ | ||||
|  */ | ||||
|  | ||||
| /* Control functions **********************************************************/ | ||||
| HAL_StatusTypeDef HAL_CAN_Start(CAN_HandleTypeDef *hcan); | ||||
| HAL_StatusTypeDef HAL_CAN_Stop(CAN_HandleTypeDef *hcan); | ||||
| HAL_StatusTypeDef HAL_CAN_RequestSleep(CAN_HandleTypeDef *hcan); | ||||
| HAL_StatusTypeDef HAL_CAN_WakeUp(CAN_HandleTypeDef *hcan); | ||||
| uint32_t HAL_CAN_IsSleepActive(CAN_HandleTypeDef *hcan); | ||||
| HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, CAN_TxHeaderTypeDef *pHeader, uint8_t aData[], uint32_t *pTxMailbox); | ||||
| HAL_StatusTypeDef HAL_CAN_AbortTxRequest(CAN_HandleTypeDef *hcan, uint32_t TxMailboxes); | ||||
| uint32_t HAL_CAN_GetTxMailboxesFreeLevel(CAN_HandleTypeDef *hcan); | ||||
| uint32_t HAL_CAN_IsTxMessagePending(CAN_HandleTypeDef *hcan, uint32_t TxMailboxes); | ||||
| uint32_t HAL_CAN_GetTxTimestamp(CAN_HandleTypeDef *hcan, uint32_t TxMailbox); | ||||
| HAL_StatusTypeDef HAL_CAN_GetRxMessage(CAN_HandleTypeDef *hcan, uint32_t RxFifo, CAN_RxHeaderTypeDef *pHeader, uint8_t aData[]); | ||||
| uint32_t HAL_CAN_GetRxFifoFillLevel(CAN_HandleTypeDef *hcan, uint32_t RxFifo); | ||||
|  | ||||
| /** | ||||
|  * @} | ||||
|  */ | ||||
|  | ||||
| /** @addtogroup CAN_Exported_Functions_Group4 Interrupts management | ||||
|  *  @brief    Interrupts management | ||||
|  * @{ | ||||
|  */ | ||||
| /* Interrupts management ******************************************************/ | ||||
| HAL_StatusTypeDef HAL_CAN_ActivateNotification(CAN_HandleTypeDef *hcan, uint32_t ActiveITs); | ||||
| HAL_StatusTypeDef HAL_CAN_DeactivateNotification(CAN_HandleTypeDef *hcan, uint32_t InactiveITs); | ||||
| void HAL_CAN_IRQHandler(CAN_HandleTypeDef *hcan); | ||||
|  | ||||
| /** | ||||
|  * @} | ||||
|  */ | ||||
|  | ||||
| /** @addtogroup CAN_Exported_Functions_Group5 Callback functions | ||||
|  *  @brief    Callback functions | ||||
|  * @{ | ||||
|  */ | ||||
| /* Callbacks functions ********************************************************/ | ||||
|  | ||||
| void HAL_CAN_TxMailbox0CompleteCallback(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_TxMailbox1CompleteCallback(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_TxMailbox0AbortCallback(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_TxMailbox1AbortCallback(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_TxMailbox2AbortCallback(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_RxFifo0FullCallback(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_RxFifo1FullCallback(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_SleepCallback(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_WakeUpFromRxMsgCallback(CAN_HandleTypeDef *hcan); | ||||
| void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan); | ||||
|  | ||||
| /** | ||||
|  * @} | ||||
|  */ | ||||
|  | ||||
| /** @addtogroup CAN_Exported_Functions_Group6 Peripheral State and Error functions | ||||
|  *  @brief   CAN Peripheral State functions | ||||
|  * @{ | ||||
|  */ | ||||
| /* Peripheral State and Error functions ***************************************/ | ||||
| HAL_CAN_StateTypeDef HAL_CAN_GetState(CAN_HandleTypeDef *hcan); | ||||
| uint32_t HAL_CAN_GetError(CAN_HandleTypeDef *hcan); | ||||
| HAL_StatusTypeDef HAL_CAN_ResetError(CAN_HandleTypeDef *hcan); | ||||
|  | ||||
| /** | ||||
|  * @} | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * @} | ||||
|  */ | ||||
|  | ||||
| /* Private types -------------------------------------------------------------*/ | ||||
| /** @defgroup CAN_Private_Types CAN Private Types | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /* Private variables ---------------------------------------------------------*/ | ||||
| /** @defgroup CAN_Private_Variables CAN Private Variables | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /* Private constants ---------------------------------------------------------*/ | ||||
| /** @defgroup CAN_Private_Constants CAN Private Constants | ||||
|   * @{ | ||||
|   */ | ||||
| #define CAN_FLAG_MASK  (0x000000FFU) | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /* Private Macros -----------------------------------------------------------*/ | ||||
| /** @defgroup CAN_Private_Macros CAN Private Macros | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| #define IS_CAN_MODE(MODE) (((MODE) == CAN_MODE_NORMAL) || \ | ||||
|                            ((MODE) == CAN_MODE_LOOPBACK)|| \ | ||||
|                            ((MODE) == CAN_MODE_SILENT) || \ | ||||
|                            ((MODE) == CAN_MODE_SILENT_LOOPBACK)) | ||||
| #define IS_CAN_SJW(SJW) (((SJW) == CAN_SJW_1TQ) || ((SJW) == CAN_SJW_2TQ) || \ | ||||
|                          ((SJW) == CAN_SJW_3TQ) || ((SJW) == CAN_SJW_4TQ)) | ||||
| #define IS_CAN_BS1(BS1) (((BS1) == CAN_BS1_1TQ) || ((BS1) == CAN_BS1_2TQ) || \ | ||||
|                          ((BS1) == CAN_BS1_3TQ) || ((BS1) == CAN_BS1_4TQ) || \ | ||||
|                          ((BS1) == CAN_BS1_5TQ) || ((BS1) == CAN_BS1_6TQ) || \ | ||||
|                          ((BS1) == CAN_BS1_7TQ) || ((BS1) == CAN_BS1_8TQ) || \ | ||||
|                          ((BS1) == CAN_BS1_9TQ) || ((BS1) == CAN_BS1_10TQ)|| \ | ||||
|                          ((BS1) == CAN_BS1_11TQ)|| ((BS1) == CAN_BS1_12TQ)|| \ | ||||
|                          ((BS1) == CAN_BS1_13TQ)|| ((BS1) == CAN_BS1_14TQ)|| \ | ||||
|                          ((BS1) == CAN_BS1_15TQ)|| ((BS1) == CAN_BS1_16TQ)) | ||||
| #define IS_CAN_BS2(BS2) (((BS2) == CAN_BS2_1TQ) || ((BS2) == CAN_BS2_2TQ) || \ | ||||
|                          ((BS2) == CAN_BS2_3TQ) || ((BS2) == CAN_BS2_4TQ) || \ | ||||
|                          ((BS2) == CAN_BS2_5TQ) || ((BS2) == CAN_BS2_6TQ) || \ | ||||
|                          ((BS2) == CAN_BS2_7TQ) || ((BS2) == CAN_BS2_8TQ)) | ||||
| #define IS_CAN_PRESCALER(PRESCALER) (((PRESCALER) >= 1U) && ((PRESCALER) <= 1024U)) | ||||
| #define IS_CAN_FILTER_ID_HALFWORD(HALFWORD) ((HALFWORD) <= 0xFFFFU) | ||||
| #if   defined(CAN2) | ||||
| #define IS_CAN_FILTER_BANK_DUAL(BANK) ((BANK) <= 27U) | ||||
| #endif | ||||
| #define IS_CAN_FILTER_BANK_SINGLE(BANK) ((BANK) <= 13U) | ||||
| #define IS_CAN_FILTER_MODE(MODE) (((MODE) == CAN_FILTERMODE_IDMASK) || \ | ||||
|                                   ((MODE) == CAN_FILTERMODE_IDLIST)) | ||||
| #define IS_CAN_FILTER_SCALE(SCALE) (((SCALE) == CAN_FILTERSCALE_16BIT) || \ | ||||
|                                     ((SCALE) == CAN_FILTERSCALE_32BIT)) | ||||
| #define IS_CAN_FILTER_ACTIVATION(ACTIVATION) (((ACTIVATION) == CAN_FILTER_DISABLE) || \ | ||||
|                                               ((ACTIVATION) == CAN_FILTER_ENABLE)) | ||||
| #define IS_CAN_FILTER_FIFO(FIFO) (((FIFO) == CAN_FILTER_FIFO0) || \ | ||||
|                                   ((FIFO) == CAN_FILTER_FIFO1)) | ||||
| #define IS_CAN_TX_MAILBOX(TRANSMITMAILBOX) (((TRANSMITMAILBOX) == CAN_TX_MAILBOX0 ) || \ | ||||
|                                             ((TRANSMITMAILBOX) == CAN_TX_MAILBOX1 ) || \ | ||||
|                                             ((TRANSMITMAILBOX) == CAN_TX_MAILBOX2 )) | ||||
| #define IS_CAN_TX_MAILBOX_LIST(TRANSMITMAILBOX) ((TRANSMITMAILBOX) <= (CAN_TX_MAILBOX0 | CAN_TX_MAILBOX1 | CAN_TX_MAILBOX2)) | ||||
| #define IS_CAN_STDID(STDID)   ((STDID) <= 0x7FFU) | ||||
| #define IS_CAN_EXTID(EXTID)   ((EXTID) <= 0x1FFFFFFFU) | ||||
| #define IS_CAN_DLC(DLC)       ((DLC) <= 8U) | ||||
| #define IS_CAN_IDTYPE(IDTYPE)  (((IDTYPE) == CAN_ID_STD) || \ | ||||
|                                 ((IDTYPE) == CAN_ID_EXT)) | ||||
| #define IS_CAN_RTR(RTR) (((RTR) == CAN_RTR_DATA) || ((RTR) == CAN_RTR_REMOTE)) | ||||
| #define IS_CAN_RX_FIFO(FIFO) (((FIFO) == CAN_RX_FIFO0) || ((FIFO) == CAN_RX_FIFO1)) | ||||
| #define IS_CAN_IT(IT) ((IT) <= (CAN_IT_TX_MAILBOX_EMPTY     | CAN_IT_RX_FIFO0_MSG_PENDING      | \ | ||||
|                                 CAN_IT_RX_FIFO0_FULL        | CAN_IT_RX_FIFO0_OVERRUN          | \ | ||||
|                                 CAN_IT_RX_FIFO1_MSG_PENDING | CAN_IT_RX_FIFO1_FULL             | \ | ||||
|                                 CAN_IT_RX_FIFO1_OVERRUN     | CAN_IT_WAKEUP                    | \ | ||||
|                                 CAN_IT_SLEEP_ACK            | CAN_IT_ERROR_WARNING             | \ | ||||
|                                 CAN_IT_ERROR_PASSIVE        | CAN_IT_BUSOFF                    | \ | ||||
|                                 CAN_IT_LAST_ERROR_CODE      | CAN_IT_ERROR)) | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
| /* End of private macros -----------------------------------------------------*/ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
|  | ||||
| #endif /* CAN1 */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif /* STM32F7xx_HAL_CAN_H */ | ||||
		Reference in New Issue
	
	Block a user