mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Fri Aug 14 13:15:17 2015 +0100
Revision:
610:813dcc80987e
Parent:
573:ad23fe03a082
Synchronized with git revision 6d84db41c6833e0b9b024741eb0616a5f62d5599

Full URL: https://github.com/mbedmicro/mbed/commit/6d84db41c6833e0b9b024741eb0616a5f62d5599/

DISCO_F746NG - Improvements

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 573:ad23fe03a082 1 /**
mbed_official 573:ad23fe03a082 2 ******************************************************************************
mbed_official 573:ad23fe03a082 3 * @file stm32f7xx_hal_can.h
mbed_official 573:ad23fe03a082 4 * @author MCD Application Team
mbed_official 610:813dcc80987e 5 * @version V1.0.1
mbed_official 610:813dcc80987e 6 * @date 25-June-2015
mbed_official 573:ad23fe03a082 7 * @brief Header file of CAN HAL module.
mbed_official 573:ad23fe03a082 8 ******************************************************************************
mbed_official 573:ad23fe03a082 9 * @attention
mbed_official 573:ad23fe03a082 10 *
mbed_official 573:ad23fe03a082 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 573:ad23fe03a082 12 *
mbed_official 573:ad23fe03a082 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 573:ad23fe03a082 14 * are permitted provided that the following conditions are met:
mbed_official 573:ad23fe03a082 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 573:ad23fe03a082 16 * this list of conditions and the following disclaimer.
mbed_official 573:ad23fe03a082 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 573:ad23fe03a082 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 573:ad23fe03a082 19 * and/or other materials provided with the distribution.
mbed_official 573:ad23fe03a082 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 573:ad23fe03a082 21 * may be used to endorse or promote products derived from this software
mbed_official 573:ad23fe03a082 22 * without specific prior written permission.
mbed_official 573:ad23fe03a082 23 *
mbed_official 573:ad23fe03a082 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 573:ad23fe03a082 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 573:ad23fe03a082 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 573:ad23fe03a082 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 573:ad23fe03a082 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 573:ad23fe03a082 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 573:ad23fe03a082 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 573:ad23fe03a082 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 573:ad23fe03a082 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 573:ad23fe03a082 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 573:ad23fe03a082 34 *
mbed_official 573:ad23fe03a082 35 ******************************************************************************
mbed_official 573:ad23fe03a082 36 */
mbed_official 573:ad23fe03a082 37
mbed_official 573:ad23fe03a082 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 573:ad23fe03a082 39 #ifndef __STM32F7xx_HAL_CAN_H
mbed_official 573:ad23fe03a082 40 #define __STM32F7xx_HAL_CAN_H
mbed_official 573:ad23fe03a082 41
mbed_official 573:ad23fe03a082 42 #ifdef __cplusplus
mbed_official 573:ad23fe03a082 43 extern "C" {
mbed_official 573:ad23fe03a082 44 #endif
mbed_official 573:ad23fe03a082 45
mbed_official 573:ad23fe03a082 46 /* Includes ------------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 47 #include "stm32f7xx_hal_def.h"
mbed_official 573:ad23fe03a082 48
mbed_official 573:ad23fe03a082 49 /** @addtogroup STM32F7xx_HAL_Driver
mbed_official 573:ad23fe03a082 50 * @{
mbed_official 573:ad23fe03a082 51 */
mbed_official 573:ad23fe03a082 52
mbed_official 573:ad23fe03a082 53 /** @addtogroup CAN
mbed_official 573:ad23fe03a082 54 * @{
mbed_official 573:ad23fe03a082 55 */
mbed_official 573:ad23fe03a082 56
mbed_official 573:ad23fe03a082 57 /* Exported types ------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 58 /** @defgroup CAN_Exported_Types CAN Exported Types
mbed_official 573:ad23fe03a082 59 * @{
mbed_official 573:ad23fe03a082 60 */
mbed_official 573:ad23fe03a082 61
mbed_official 573:ad23fe03a082 62 /**
mbed_official 573:ad23fe03a082 63 * @brief HAL State structures definition
mbed_official 573:ad23fe03a082 64 */
mbed_official 573:ad23fe03a082 65 typedef enum
mbed_official 573:ad23fe03a082 66 {
mbed_official 573:ad23fe03a082 67 HAL_CAN_STATE_RESET = 0x00, /*!< CAN not yet initialized or disabled */
mbed_official 573:ad23fe03a082 68 HAL_CAN_STATE_READY = 0x01, /*!< CAN initialized and ready for use */
mbed_official 573:ad23fe03a082 69 HAL_CAN_STATE_BUSY = 0x02, /*!< CAN process is ongoing */
mbed_official 573:ad23fe03a082 70 HAL_CAN_STATE_BUSY_TX = 0x12, /*!< CAN process is ongoing */
mbed_official 573:ad23fe03a082 71 HAL_CAN_STATE_BUSY_RX = 0x22, /*!< CAN process is ongoing */
mbed_official 573:ad23fe03a082 72 HAL_CAN_STATE_BUSY_TX_RX = 0x32, /*!< CAN process is ongoing */
mbed_official 573:ad23fe03a082 73 HAL_CAN_STATE_TIMEOUT = 0x03, /*!< Timeout state */
mbed_official 573:ad23fe03a082 74 HAL_CAN_STATE_ERROR = 0x04 /*!< CAN error state */
mbed_official 573:ad23fe03a082 75
mbed_official 573:ad23fe03a082 76 }HAL_CAN_StateTypeDef;
mbed_official 573:ad23fe03a082 77
mbed_official 573:ad23fe03a082 78 /**
mbed_official 573:ad23fe03a082 79 * @brief CAN init structure definition
mbed_official 573:ad23fe03a082 80 */
mbed_official 573:ad23fe03a082 81 typedef struct
mbed_official 573:ad23fe03a082 82 {
mbed_official 573:ad23fe03a082 83 uint32_t Prescaler; /*!< Specifies the length of a time quantum.
mbed_official 573:ad23fe03a082 84 This parameter must be a number between Min_Data = 1 and Max_Data = 1024 */
mbed_official 573:ad23fe03a082 85
mbed_official 573:ad23fe03a082 86 uint32_t Mode; /*!< Specifies the CAN operating mode.
mbed_official 573:ad23fe03a082 87 This parameter can be a value of @ref CAN_operating_mode */
mbed_official 573:ad23fe03a082 88
mbed_official 573:ad23fe03a082 89 uint32_t SJW; /*!< Specifies the maximum number of time quanta
mbed_official 573:ad23fe03a082 90 the CAN hardware is allowed to lengthen or
mbed_official 573:ad23fe03a082 91 shorten a bit to perform resynchronization.
mbed_official 573:ad23fe03a082 92 This parameter can be a value of @ref CAN_synchronisation_jump_width */
mbed_official 573:ad23fe03a082 93
mbed_official 573:ad23fe03a082 94 uint32_t BS1; /*!< Specifies the number of time quanta in Bit Segment 1.
mbed_official 573:ad23fe03a082 95 This parameter can be a value of @ref CAN_time_quantum_in_bit_segment_1 */
mbed_official 573:ad23fe03a082 96
mbed_official 573:ad23fe03a082 97 uint32_t BS2; /*!< Specifies the number of time quanta in Bit Segment 2.
mbed_official 573:ad23fe03a082 98 This parameter can be a value of @ref CAN_time_quantum_in_bit_segment_2 */
mbed_official 573:ad23fe03a082 99
mbed_official 573:ad23fe03a082 100 uint32_t TTCM; /*!< Enable or disable the time triggered communication mode.
mbed_official 573:ad23fe03a082 101 This parameter can be set to ENABLE or DISABLE. */
mbed_official 573:ad23fe03a082 102
mbed_official 573:ad23fe03a082 103 uint32_t ABOM; /*!< Enable or disable the automatic bus-off management.
mbed_official 573:ad23fe03a082 104 This parameter can be set to ENABLE or DISABLE */
mbed_official 573:ad23fe03a082 105
mbed_official 573:ad23fe03a082 106 uint32_t AWUM; /*!< Enable or disable the automatic wake-up mode.
mbed_official 573:ad23fe03a082 107 This parameter can be set to ENABLE or DISABLE */
mbed_official 573:ad23fe03a082 108
mbed_official 573:ad23fe03a082 109 uint32_t NART; /*!< Enable or disable the non-automatic retransmission mode.
mbed_official 573:ad23fe03a082 110 This parameter can be set to ENABLE or DISABLE */
mbed_official 573:ad23fe03a082 111
mbed_official 573:ad23fe03a082 112 uint32_t RFLM; /*!< Enable or disable the receive FIFO Locked mode.
mbed_official 573:ad23fe03a082 113 This parameter can be set to ENABLE or DISABLE */
mbed_official 573:ad23fe03a082 114
mbed_official 573:ad23fe03a082 115 uint32_t TXFP; /*!< Enable or disable the transmit FIFO priority.
mbed_official 573:ad23fe03a082 116 This parameter can be set to ENABLE or DISABLE */
mbed_official 573:ad23fe03a082 117 }CAN_InitTypeDef;
mbed_official 573:ad23fe03a082 118
mbed_official 573:ad23fe03a082 119 /**
mbed_official 573:ad23fe03a082 120 * @brief CAN filter configuration structure definition
mbed_official 573:ad23fe03a082 121 */
mbed_official 573:ad23fe03a082 122 typedef struct
mbed_official 573:ad23fe03a082 123 {
mbed_official 573:ad23fe03a082 124 uint32_t FilterIdHigh; /*!< Specifies the filter identification number (MSBs for a 32-bit
mbed_official 573:ad23fe03a082 125 configuration, first one for a 16-bit configuration).
mbed_official 573:ad23fe03a082 126 This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
mbed_official 573:ad23fe03a082 127
mbed_official 573:ad23fe03a082 128 uint32_t FilterIdLow; /*!< Specifies the filter identification number (LSBs for a 32-bit
mbed_official 573:ad23fe03a082 129 configuration, second one for a 16-bit configuration).
mbed_official 573:ad23fe03a082 130 This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
mbed_official 573:ad23fe03a082 131
mbed_official 573:ad23fe03a082 132 uint32_t FilterMaskIdHigh; /*!< Specifies the filter mask number or identification number,
mbed_official 573:ad23fe03a082 133 according to the mode (MSBs for a 32-bit configuration,
mbed_official 573:ad23fe03a082 134 first one for a 16-bit configuration).
mbed_official 573:ad23fe03a082 135 This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
mbed_official 573:ad23fe03a082 136
mbed_official 573:ad23fe03a082 137 uint32_t FilterMaskIdLow; /*!< Specifies the filter mask number or identification number,
mbed_official 573:ad23fe03a082 138 according to the mode (LSBs for a 32-bit configuration,
mbed_official 573:ad23fe03a082 139 second one for a 16-bit configuration).
mbed_official 573:ad23fe03a082 140 This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
mbed_official 573:ad23fe03a082 141
mbed_official 573:ad23fe03a082 142 uint32_t FilterFIFOAssignment; /*!< Specifies the FIFO (0 or 1) which will be assigned to the filter.
mbed_official 573:ad23fe03a082 143 This parameter can be a value of @ref CAN_filter_FIFO */
mbed_official 573:ad23fe03a082 144
mbed_official 573:ad23fe03a082 145 uint32_t FilterNumber; /*!< Specifies the filter which will be initialized.
mbed_official 573:ad23fe03a082 146 This parameter must be a number between Min_Data = 0 and Max_Data = 27 */
mbed_official 573:ad23fe03a082 147
mbed_official 573:ad23fe03a082 148 uint32_t FilterMode; /*!< Specifies the filter mode to be initialized.
mbed_official 573:ad23fe03a082 149 This parameter can be a value of @ref CAN_filter_mode */
mbed_official 573:ad23fe03a082 150
mbed_official 573:ad23fe03a082 151 uint32_t FilterScale; /*!< Specifies the filter scale.
mbed_official 573:ad23fe03a082 152 This parameter can be a value of @ref CAN_filter_scale */
mbed_official 573:ad23fe03a082 153
mbed_official 573:ad23fe03a082 154 uint32_t FilterActivation; /*!< Enable or disable the filter.
mbed_official 573:ad23fe03a082 155 This parameter can be set to ENABLE or DISABLE. */
mbed_official 573:ad23fe03a082 156
mbed_official 573:ad23fe03a082 157 uint32_t BankNumber; /*!< Select the start slave bank filter.
mbed_official 573:ad23fe03a082 158 This parameter must be a number between Min_Data = 0 and Max_Data = 28 */
mbed_official 573:ad23fe03a082 159
mbed_official 573:ad23fe03a082 160 }CAN_FilterConfTypeDef;
mbed_official 573:ad23fe03a082 161
mbed_official 573:ad23fe03a082 162 /**
mbed_official 573:ad23fe03a082 163 * @brief CAN Tx message structure definition
mbed_official 573:ad23fe03a082 164 */
mbed_official 573:ad23fe03a082 165 typedef struct
mbed_official 573:ad23fe03a082 166 {
mbed_official 573:ad23fe03a082 167 uint32_t StdId; /*!< Specifies the standard identifier.
mbed_official 573:ad23fe03a082 168 This parameter must be a number between Min_Data = 0 and Max_Data = 0x7FF */
mbed_official 573:ad23fe03a082 169
mbed_official 573:ad23fe03a082 170 uint32_t ExtId; /*!< Specifies the extended identifier.
mbed_official 573:ad23fe03a082 171 This parameter must be a number between Min_Data = 0 and Max_Data = 0x1FFFFFFF */
mbed_official 573:ad23fe03a082 172
mbed_official 573:ad23fe03a082 173 uint32_t IDE; /*!< Specifies the type of identifier for the message that will be transmitted.
mbed_official 573:ad23fe03a082 174 This parameter can be a value of @ref CAN_Identifier_Type */
mbed_official 573:ad23fe03a082 175
mbed_official 573:ad23fe03a082 176 uint32_t RTR; /*!< Specifies the type of frame for the message that will be transmitted.
mbed_official 573:ad23fe03a082 177 This parameter can be a value of @ref CAN_remote_transmission_request */
mbed_official 573:ad23fe03a082 178
mbed_official 573:ad23fe03a082 179 uint32_t DLC; /*!< Specifies the length of the frame that will be transmitted.
mbed_official 573:ad23fe03a082 180 This parameter must be a number between Min_Data = 0 and Max_Data = 8 */
mbed_official 573:ad23fe03a082 181
mbed_official 573:ad23fe03a082 182 uint8_t Data[8]; /*!< Contains the data to be transmitted.
mbed_official 573:ad23fe03a082 183 This parameter must be a number between Min_Data = 0 and Max_Data = 0xFF */
mbed_official 573:ad23fe03a082 184
mbed_official 573:ad23fe03a082 185 }CanTxMsgTypeDef;
mbed_official 573:ad23fe03a082 186
mbed_official 573:ad23fe03a082 187 /**
mbed_official 573:ad23fe03a082 188 * @brief CAN Rx message structure definition
mbed_official 573:ad23fe03a082 189 */
mbed_official 573:ad23fe03a082 190 typedef struct
mbed_official 573:ad23fe03a082 191 {
mbed_official 573:ad23fe03a082 192 uint32_t StdId; /*!< Specifies the standard identifier.
mbed_official 573:ad23fe03a082 193 This parameter must be a number between Min_Data = 0 and Max_Data = 0x7FF */
mbed_official 573:ad23fe03a082 194
mbed_official 573:ad23fe03a082 195 uint32_t ExtId; /*!< Specifies the extended identifier.
mbed_official 573:ad23fe03a082 196 This parameter must be a number between Min_Data = 0 and Max_Data = 0x1FFFFFFF */
mbed_official 573:ad23fe03a082 197
mbed_official 573:ad23fe03a082 198 uint32_t IDE; /*!< Specifies the type of identifier for the message that will be received.
mbed_official 573:ad23fe03a082 199 This parameter can be a value of @ref CAN_Identifier_Type */
mbed_official 573:ad23fe03a082 200
mbed_official 573:ad23fe03a082 201 uint32_t RTR; /*!< Specifies the type of frame for the received message.
mbed_official 573:ad23fe03a082 202 This parameter can be a value of @ref CAN_remote_transmission_request */
mbed_official 573:ad23fe03a082 203
mbed_official 573:ad23fe03a082 204 uint32_t DLC; /*!< Specifies the length of the frame that will be received.
mbed_official 573:ad23fe03a082 205 This parameter must be a number between Min_Data = 0 and Max_Data = 8 */
mbed_official 573:ad23fe03a082 206
mbed_official 573:ad23fe03a082 207 uint8_t Data[8]; /*!< Contains the data to be received.
mbed_official 573:ad23fe03a082 208 This parameter must be a number between Min_Data = 0 and Max_Data = 0xFF */
mbed_official 573:ad23fe03a082 209
mbed_official 573:ad23fe03a082 210 uint32_t FMI; /*!< Specifies the index of the filter the message stored in the mailbox passes through.
mbed_official 573:ad23fe03a082 211 This parameter must be a number between Min_Data = 0 and Max_Data = 0xFF */
mbed_official 573:ad23fe03a082 212
mbed_official 573:ad23fe03a082 213 uint32_t FIFONumber; /*!< Specifies the receive FIFO number.
mbed_official 573:ad23fe03a082 214 This parameter can be CAN_FIFO0 or CAN_FIFO1 */
mbed_official 573:ad23fe03a082 215
mbed_official 573:ad23fe03a082 216 }CanRxMsgTypeDef;
mbed_official 573:ad23fe03a082 217
mbed_official 573:ad23fe03a082 218 /**
mbed_official 573:ad23fe03a082 219 * @brief CAN handle Structure definition
mbed_official 573:ad23fe03a082 220 */
mbed_official 573:ad23fe03a082 221 typedef struct
mbed_official 573:ad23fe03a082 222 {
mbed_official 573:ad23fe03a082 223 CAN_TypeDef *Instance; /*!< Register base address */
mbed_official 573:ad23fe03a082 224
mbed_official 573:ad23fe03a082 225 CAN_InitTypeDef Init; /*!< CAN required parameters */
mbed_official 573:ad23fe03a082 226
mbed_official 573:ad23fe03a082 227 CanTxMsgTypeDef* pTxMsg; /*!< Pointer to transmit structure */
mbed_official 573:ad23fe03a082 228
mbed_official 573:ad23fe03a082 229 CanRxMsgTypeDef* pRxMsg; /*!< Pointer to reception structure */
mbed_official 573:ad23fe03a082 230
mbed_official 573:ad23fe03a082 231 __IO HAL_CAN_StateTypeDef State; /*!< CAN communication state */
mbed_official 573:ad23fe03a082 232
mbed_official 573:ad23fe03a082 233 HAL_LockTypeDef Lock; /*!< CAN locking object */
mbed_official 573:ad23fe03a082 234
mbed_official 573:ad23fe03a082 235 __IO uint32_t ErrorCode; /*!< CAN Error code */
mbed_official 573:ad23fe03a082 236
mbed_official 573:ad23fe03a082 237 }CAN_HandleTypeDef;
mbed_official 573:ad23fe03a082 238
mbed_official 573:ad23fe03a082 239 /**
mbed_official 573:ad23fe03a082 240 * @}
mbed_official 573:ad23fe03a082 241 */
mbed_official 573:ad23fe03a082 242
mbed_official 573:ad23fe03a082 243 /* Exported constants --------------------------------------------------------*/
mbed_official 573:ad23fe03a082 244 /** @defgroup CAN_Exported_Constants CAN Exported Constants
mbed_official 573:ad23fe03a082 245 * @{
mbed_official 573:ad23fe03a082 246 */
mbed_official 573:ad23fe03a082 247
mbed_official 573:ad23fe03a082 248 /** @defgroup HAL_CAN_Error_Code HAL CAN Error Code
mbed_official 573:ad23fe03a082 249 * @{
mbed_official 573:ad23fe03a082 250 */
mbed_official 573:ad23fe03a082 251 #define HAL_CAN_ERROR_NONE 0x00 /*!< No error */
mbed_official 573:ad23fe03a082 252 #define HAL_CAN_ERROR_EWG 0x01 /*!< EWG error */
mbed_official 573:ad23fe03a082 253 #define HAL_CAN_ERROR_EPV 0x02 /*!< EPV error */
mbed_official 573:ad23fe03a082 254 #define HAL_CAN_ERROR_BOF 0x04 /*!< BOF error */
mbed_official 573:ad23fe03a082 255 #define HAL_CAN_ERROR_STF 0x08 /*!< Stuff error */
mbed_official 573:ad23fe03a082 256 #define HAL_CAN_ERROR_FOR 0x10 /*!< Form error */
mbed_official 573:ad23fe03a082 257 #define HAL_CAN_ERROR_ACK 0x20 /*!< Acknowledgment error */
mbed_official 573:ad23fe03a082 258 #define HAL_CAN_ERROR_BR 0x40 /*!< Bit recessive */
mbed_official 573:ad23fe03a082 259 #define HAL_CAN_ERROR_BD 0x80 /*!< LEC dominant */
mbed_official 573:ad23fe03a082 260 #define HAL_CAN_ERROR_CRC 0x100 /*!< LEC transfer error */
mbed_official 573:ad23fe03a082 261 /**
mbed_official 573:ad23fe03a082 262 * @}
mbed_official 573:ad23fe03a082 263 */
mbed_official 573:ad23fe03a082 264
mbed_official 573:ad23fe03a082 265 /** @defgroup CAN_InitStatus CAN InitStatus
mbed_official 573:ad23fe03a082 266 * @{
mbed_official 573:ad23fe03a082 267 */
mbed_official 573:ad23fe03a082 268 #define CAN_INITSTATUS_FAILED ((uint8_t)0x00) /*!< CAN initialization failed */
mbed_official 573:ad23fe03a082 269 #define CAN_INITSTATUS_SUCCESS ((uint8_t)0x01) /*!< CAN initialization OK */
mbed_official 573:ad23fe03a082 270 /**
mbed_official 573:ad23fe03a082 271 * @}
mbed_official 573:ad23fe03a082 272 */
mbed_official 573:ad23fe03a082 273
mbed_official 573:ad23fe03a082 274 /** @defgroup CAN_operating_mode CAN Operating Mode
mbed_official 573:ad23fe03a082 275 * @{
mbed_official 573:ad23fe03a082 276 */
mbed_official 573:ad23fe03a082 277 #define CAN_MODE_NORMAL ((uint32_t)0x00000000) /*!< Normal mode */
mbed_official 573:ad23fe03a082 278 #define CAN_MODE_LOOPBACK ((uint32_t)CAN_BTR_LBKM) /*!< Loopback mode */
mbed_official 573:ad23fe03a082 279 #define CAN_MODE_SILENT ((uint32_t)CAN_BTR_SILM) /*!< Silent mode */
mbed_official 573:ad23fe03a082 280 #define CAN_MODE_SILENT_LOOPBACK ((uint32_t)(CAN_BTR_LBKM | CAN_BTR_SILM)) /*!< Loopback combined with silent mode */
mbed_official 573:ad23fe03a082 281 /**
mbed_official 573:ad23fe03a082 282 * @}
mbed_official 573:ad23fe03a082 283 */
mbed_official 573:ad23fe03a082 284
mbed_official 573:ad23fe03a082 285 /** @defgroup CAN_synchronisation_jump_width CAN Synchronisation Jump Width
mbed_official 573:ad23fe03a082 286 * @{
mbed_official 573:ad23fe03a082 287 */
mbed_official 573:ad23fe03a082 288 #define CAN_SJW_1TQ ((uint32_t)0x00000000) /*!< 1 time quantum */
mbed_official 573:ad23fe03a082 289 #define CAN_SJW_2TQ ((uint32_t)CAN_BTR_SJW_0) /*!< 2 time quantum */
mbed_official 573:ad23fe03a082 290 #define CAN_SJW_3TQ ((uint32_t)CAN_BTR_SJW_1) /*!< 3 time quantum */
mbed_official 573:ad23fe03a082 291 #define CAN_SJW_4TQ ((uint32_t)CAN_BTR_SJW) /*!< 4 time quantum */
mbed_official 573:ad23fe03a082 292 /**
mbed_official 573:ad23fe03a082 293 * @}
mbed_official 573:ad23fe03a082 294 */
mbed_official 573:ad23fe03a082 295
mbed_official 573:ad23fe03a082 296 /** @defgroup CAN_time_quantum_in_bit_segment_1 CAN Time Quantum in bit segment 1
mbed_official 573:ad23fe03a082 297 * @{
mbed_official 573:ad23fe03a082 298 */
mbed_official 573:ad23fe03a082 299 #define CAN_BS1_1TQ ((uint32_t)0x00000000) /*!< 1 time quantum */
mbed_official 573:ad23fe03a082 300 #define CAN_BS1_2TQ ((uint32_t)CAN_BTR_TS1_0) /*!< 2 time quantum */
mbed_official 573:ad23fe03a082 301 #define CAN_BS1_3TQ ((uint32_t)CAN_BTR_TS1_1) /*!< 3 time quantum */
mbed_official 573:ad23fe03a082 302 #define CAN_BS1_4TQ ((uint32_t)(CAN_BTR_TS1_1 | CAN_BTR_TS1_0)) /*!< 4 time quantum */
mbed_official 573:ad23fe03a082 303 #define CAN_BS1_5TQ ((uint32_t)CAN_BTR_TS1_2) /*!< 5 time quantum */
mbed_official 573:ad23fe03a082 304 #define CAN_BS1_6TQ ((uint32_t)(CAN_BTR_TS1_2 | CAN_BTR_TS1_0)) /*!< 6 time quantum */
mbed_official 573:ad23fe03a082 305 #define CAN_BS1_7TQ ((uint32_t)(CAN_BTR_TS1_2 | CAN_BTR_TS1_1)) /*!< 7 time quantum */
mbed_official 573:ad23fe03a082 306 #define CAN_BS1_8TQ ((uint32_t)(CAN_BTR_TS1_2 | CAN_BTR_TS1_1 | CAN_BTR_TS1_0)) /*!< 8 time quantum */
mbed_official 573:ad23fe03a082 307 #define CAN_BS1_9TQ ((uint32_t)CAN_BTR_TS1_3) /*!< 9 time quantum */
mbed_official 573:ad23fe03a082 308 #define CAN_BS1_10TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_0)) /*!< 10 time quantum */
mbed_official 573:ad23fe03a082 309 #define CAN_BS1_11TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_1)) /*!< 11 time quantum */
mbed_official 573:ad23fe03a082 310 #define CAN_BS1_12TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_1 | CAN_BTR_TS1_0)) /*!< 12 time quantum */
mbed_official 573:ad23fe03a082 311 #define CAN_BS1_13TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_2)) /*!< 13 time quantum */
mbed_official 573:ad23fe03a082 312 #define CAN_BS1_14TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_2 | CAN_BTR_TS1_0)) /*!< 14 time quantum */
mbed_official 573:ad23fe03a082 313 #define CAN_BS1_15TQ ((uint32_t)(CAN_BTR_TS1_3 | CAN_BTR_TS1_2 | CAN_BTR_TS1_1)) /*!< 15 time quantum */
mbed_official 573:ad23fe03a082 314 #define CAN_BS1_16TQ ((uint32_t)CAN_BTR_TS1) /*!< 16 time quantum */
mbed_official 573:ad23fe03a082 315 /**
mbed_official 573:ad23fe03a082 316 * @}
mbed_official 573:ad23fe03a082 317 */
mbed_official 573:ad23fe03a082 318
mbed_official 573:ad23fe03a082 319 /** @defgroup CAN_time_quantum_in_bit_segment_2 CAN Time Quantum in bit segment 2
mbed_official 573:ad23fe03a082 320 * @{
mbed_official 573:ad23fe03a082 321 */
mbed_official 573:ad23fe03a082 322 #define CAN_BS2_1TQ ((uint32_t)0x00000000) /*!< 1 time quantum */
mbed_official 573:ad23fe03a082 323 #define CAN_BS2_2TQ ((uint32_t)CAN_BTR_TS2_0) /*!< 2 time quantum */
mbed_official 573:ad23fe03a082 324 #define CAN_BS2_3TQ ((uint32_t)CAN_BTR_TS2_1) /*!< 3 time quantum */
mbed_official 573:ad23fe03a082 325 #define CAN_BS2_4TQ ((uint32_t)(CAN_BTR_TS2_1 | CAN_BTR_TS2_0)) /*!< 4 time quantum */
mbed_official 573:ad23fe03a082 326 #define CAN_BS2_5TQ ((uint32_t)CAN_BTR_TS2_2) /*!< 5 time quantum */
mbed_official 573:ad23fe03a082 327 #define CAN_BS2_6TQ ((uint32_t)(CAN_BTR_TS2_2 | CAN_BTR_TS2_0)) /*!< 6 time quantum */
mbed_official 573:ad23fe03a082 328 #define CAN_BS2_7TQ ((uint32_t)(CAN_BTR_TS2_2 | CAN_BTR_TS2_1)) /*!< 7 time quantum */
mbed_official 573:ad23fe03a082 329 #define CAN_BS2_8TQ ((uint32_t)CAN_BTR_TS2) /*!< 8 time quantum */
mbed_official 573:ad23fe03a082 330 /**
mbed_official 573:ad23fe03a082 331 * @}
mbed_official 573:ad23fe03a082 332 */
mbed_official 573:ad23fe03a082 333
mbed_official 573:ad23fe03a082 334 /** @defgroup CAN_filter_mode CAN Filter Mode
mbed_official 573:ad23fe03a082 335 * @{
mbed_official 573:ad23fe03a082 336 */
mbed_official 573:ad23fe03a082 337 #define CAN_FILTERMODE_IDMASK ((uint8_t)0x00) /*!< Identifier mask mode */
mbed_official 573:ad23fe03a082 338 #define CAN_FILTERMODE_IDLIST ((uint8_t)0x01) /*!< Identifier list mode */
mbed_official 573:ad23fe03a082 339 /**
mbed_official 573:ad23fe03a082 340 * @}
mbed_official 573:ad23fe03a082 341 */
mbed_official 573:ad23fe03a082 342
mbed_official 573:ad23fe03a082 343 /** @defgroup CAN_filter_scale CAN Filter Scale
mbed_official 573:ad23fe03a082 344 * @{
mbed_official 573:ad23fe03a082 345 */
mbed_official 573:ad23fe03a082 346 #define CAN_FILTERSCALE_16BIT ((uint8_t)0x00) /*!< Two 16-bit filters */
mbed_official 573:ad23fe03a082 347 #define CAN_FILTERSCALE_32BIT ((uint8_t)0x01) /*!< One 32-bit filter */
mbed_official 573:ad23fe03a082 348 /**
mbed_official 573:ad23fe03a082 349 * @}
mbed_official 573:ad23fe03a082 350 */
mbed_official 573:ad23fe03a082 351
mbed_official 573:ad23fe03a082 352 /** @defgroup CAN_filter_FIFO CAN Filter FIFO
mbed_official 573:ad23fe03a082 353 * @{
mbed_official 573:ad23fe03a082 354 */
mbed_official 573:ad23fe03a082 355 #define CAN_FILTER_FIFO0 ((uint8_t)0x00) /*!< Filter FIFO 0 assignment for filter x */
mbed_official 573:ad23fe03a082 356 #define CAN_FILTER_FIFO1 ((uint8_t)0x01) /*!< Filter FIFO 1 assignment for filter x */
mbed_official 573:ad23fe03a082 357 /**
mbed_official 573:ad23fe03a082 358 * @}
mbed_official 573:ad23fe03a082 359 */
mbed_official 573:ad23fe03a082 360
mbed_official 573:ad23fe03a082 361 /** @defgroup CAN_Identifier_Type CAN Identifier Type
mbed_official 573:ad23fe03a082 362 * @{
mbed_official 573:ad23fe03a082 363 */
mbed_official 573:ad23fe03a082 364 #define CAN_ID_STD ((uint32_t)0x00000000) /*!< Standard Id */
mbed_official 573:ad23fe03a082 365 #define CAN_ID_EXT ((uint32_t)0x00000004) /*!< Extended Id */
mbed_official 573:ad23fe03a082 366 /**
mbed_official 573:ad23fe03a082 367 * @}
mbed_official 573:ad23fe03a082 368 */
mbed_official 573:ad23fe03a082 369
mbed_official 573:ad23fe03a082 370 /** @defgroup CAN_remote_transmission_request CAN Remote Transmission Request
mbed_official 573:ad23fe03a082 371 * @{
mbed_official 573:ad23fe03a082 372 */
mbed_official 573:ad23fe03a082 373 #define CAN_RTR_DATA ((uint32_t)0x00000000) /*!< Data frame */
mbed_official 573:ad23fe03a082 374 #define CAN_RTR_REMOTE ((uint32_t)0x00000002) /*!< Remote frame */
mbed_official 573:ad23fe03a082 375 /**
mbed_official 573:ad23fe03a082 376 * @}
mbed_official 573:ad23fe03a082 377 */
mbed_official 573:ad23fe03a082 378
mbed_official 573:ad23fe03a082 379 /** @defgroup CAN_receive_FIFO_number_constants CAN Receive FIFO Number Constants
mbed_official 573:ad23fe03a082 380 * @{
mbed_official 573:ad23fe03a082 381 */
mbed_official 573:ad23fe03a082 382 #define CAN_FIFO0 ((uint8_t)0x00) /*!< CAN FIFO 0 used to receive */
mbed_official 573:ad23fe03a082 383 #define CAN_FIFO1 ((uint8_t)0x01) /*!< CAN FIFO 1 used to receive */
mbed_official 573:ad23fe03a082 384 /**
mbed_official 573:ad23fe03a082 385 * @}
mbed_official 573:ad23fe03a082 386 */
mbed_official 573:ad23fe03a082 387
mbed_official 573:ad23fe03a082 388 /** @defgroup CAN_flags CAN Flags
mbed_official 573:ad23fe03a082 389 * @{
mbed_official 573:ad23fe03a082 390 */
mbed_official 573:ad23fe03a082 391 /* If the flag is 0x3XXXXXXX, it means that it can be used with CAN_GetFlagStatus()
mbed_official 573:ad23fe03a082 392 and CAN_ClearFlag() functions. */
mbed_official 573:ad23fe03a082 393 /* If the flag is 0x1XXXXXXX, it means that it can only be used with
mbed_official 573:ad23fe03a082 394 CAN_GetFlagStatus() function. */
mbed_official 573:ad23fe03a082 395
mbed_official 573:ad23fe03a082 396 /* Transmit Flags */
mbed_official 573:ad23fe03a082 397 #define CAN_FLAG_RQCP0 ((uint32_t)0x00000500) /*!< Request MailBox0 flag */
mbed_official 573:ad23fe03a082 398 #define CAN_FLAG_RQCP1 ((uint32_t)0x00000508) /*!< Request MailBox1 flag */
mbed_official 573:ad23fe03a082 399 #define CAN_FLAG_RQCP2 ((uint32_t)0x00000510) /*!< Request MailBox2 flag */
mbed_official 573:ad23fe03a082 400 #define CAN_FLAG_TXOK0 ((uint32_t)0x00000501) /*!< Transmission OK MailBox0 flag */
mbed_official 573:ad23fe03a082 401 #define CAN_FLAG_TXOK1 ((uint32_t)0x00000509) /*!< Transmission OK MailBox1 flag */
mbed_official 573:ad23fe03a082 402 #define CAN_FLAG_TXOK2 ((uint32_t)0x00000511) /*!< Transmission OK MailBox2 flag */
mbed_official 573:ad23fe03a082 403 #define CAN_FLAG_TME0 ((uint32_t)0x0000051A) /*!< Transmit mailbox 0 empty flag */
mbed_official 573:ad23fe03a082 404 #define CAN_FLAG_TME1 ((uint32_t)0x0000051B) /*!< Transmit mailbox 0 empty flag */
mbed_official 573:ad23fe03a082 405 #define CAN_FLAG_TME2 ((uint32_t)0x0000051C) /*!< Transmit mailbox 0 empty flag */
mbed_official 573:ad23fe03a082 406
mbed_official 573:ad23fe03a082 407 /* Receive Flags */
mbed_official 573:ad23fe03a082 408 #define CAN_FLAG_FF0 ((uint32_t)0x00000203) /*!< FIFO 0 Full flag */
mbed_official 573:ad23fe03a082 409 #define CAN_FLAG_FOV0 ((uint32_t)0x00000204) /*!< FIFO 0 Overrun flag */
mbed_official 573:ad23fe03a082 410
mbed_official 573:ad23fe03a082 411 #define CAN_FLAG_FF1 ((uint32_t)0x00000403) /*!< FIFO 1 Full flag */
mbed_official 573:ad23fe03a082 412 #define CAN_FLAG_FOV1 ((uint32_t)0x00000404) /*!< FIFO 1 Overrun flag */
mbed_official 573:ad23fe03a082 413
mbed_official 573:ad23fe03a082 414 /* Operating Mode Flags */
mbed_official 573:ad23fe03a082 415 #define CAN_FLAG_WKU ((uint32_t)0x00000103) /*!< Wake up flag */
mbed_official 573:ad23fe03a082 416 #define CAN_FLAG_SLAK ((uint32_t)0x00000101) /*!< Sleep acknowledge flag */
mbed_official 573:ad23fe03a082 417 #define CAN_FLAG_SLAKI ((uint32_t)0x00000104) /*!< Sleep acknowledge flag */
mbed_official 573:ad23fe03a082 418 /* @note When SLAK interrupt is disabled (SLKIE=0), no polling on SLAKI is possible.
mbed_official 573:ad23fe03a082 419 In this case the SLAK bit can be polled.*/
mbed_official 573:ad23fe03a082 420
mbed_official 573:ad23fe03a082 421 /* Error Flags */
mbed_official 573:ad23fe03a082 422 #define CAN_FLAG_EWG ((uint32_t)0x00000300) /*!< Error warning flag */
mbed_official 573:ad23fe03a082 423 #define CAN_FLAG_EPV ((uint32_t)0x00000301) /*!< Error passive flag */
mbed_official 573:ad23fe03a082 424 #define CAN_FLAG_BOF ((uint32_t)0x00000302) /*!< Bus-Off flag */
mbed_official 573:ad23fe03a082 425 /**
mbed_official 573:ad23fe03a082 426 * @}
mbed_official 573:ad23fe03a082 427 */
mbed_official 573:ad23fe03a082 428
mbed_official 573:ad23fe03a082 429 /** @defgroup CAN_Interrupts CAN Interrupts
mbed_official 573:ad23fe03a082 430 * @{
mbed_official 573:ad23fe03a082 431 */
mbed_official 573:ad23fe03a082 432 #define CAN_IT_TME ((uint32_t)CAN_IER_TMEIE) /*!< Transmit mailbox empty interrupt */
mbed_official 573:ad23fe03a082 433
mbed_official 573:ad23fe03a082 434 /* Receive Interrupts */
mbed_official 573:ad23fe03a082 435 #define CAN_IT_FMP0 ((uint32_t)CAN_IER_FMPIE0) /*!< FIFO 0 message pending interrupt */
mbed_official 573:ad23fe03a082 436 #define CAN_IT_FF0 ((uint32_t)CAN_IER_FFIE0) /*!< FIFO 0 full interrupt */
mbed_official 573:ad23fe03a082 437 #define CAN_IT_FOV0 ((uint32_t)CAN_IER_FOVIE0) /*!< FIFO 0 overrun interrupt */
mbed_official 573:ad23fe03a082 438 #define CAN_IT_FMP1 ((uint32_t)CAN_IER_FMPIE1) /*!< FIFO 1 message pending interrupt */
mbed_official 573:ad23fe03a082 439 #define CAN_IT_FF1 ((uint32_t)CAN_IER_FFIE1) /*!< FIFO 1 full interrupt */
mbed_official 573:ad23fe03a082 440 #define CAN_IT_FOV1 ((uint32_t)CAN_IER_FOVIE1) /*!< FIFO 1 overrun interrupt */
mbed_official 573:ad23fe03a082 441
mbed_official 573:ad23fe03a082 442 /* Operating Mode Interrupts */
mbed_official 573:ad23fe03a082 443 #define CAN_IT_WKU ((uint32_t)CAN_IER_WKUIE) /*!< Wake-up interrupt */
mbed_official 573:ad23fe03a082 444 #define CAN_IT_SLK ((uint32_t)CAN_IER_SLKIE) /*!< Sleep acknowledge interrupt */
mbed_official 573:ad23fe03a082 445
mbed_official 573:ad23fe03a082 446 /* Error Interrupts */
mbed_official 573:ad23fe03a082 447 #define CAN_IT_EWG ((uint32_t)CAN_IER_EWGIE) /*!< Error warning interrupt */
mbed_official 573:ad23fe03a082 448 #define CAN_IT_EPV ((uint32_t)CAN_IER_EPVIE) /*!< Error passive interrupt */
mbed_official 573:ad23fe03a082 449 #define CAN_IT_BOF ((uint32_t)CAN_IER_BOFIE) /*!< Bus-off interrupt */
mbed_official 573:ad23fe03a082 450 #define CAN_IT_LEC ((uint32_t)CAN_IER_LECIE) /*!< Last error code interrupt */
mbed_official 573:ad23fe03a082 451 #define CAN_IT_ERR ((uint32_t)CAN_IER_ERRIE) /*!< Error Interrupt */
mbed_official 573:ad23fe03a082 452 /**
mbed_official 573:ad23fe03a082 453 * @}
mbed_official 573:ad23fe03a082 454 */
mbed_official 573:ad23fe03a082 455
mbed_official 573:ad23fe03a082 456 /** @defgroup CAN_Mailboxes_Definition CAN Mailboxes Definition
mbed_official 573:ad23fe03a082 457 * @{
mbed_official 573:ad23fe03a082 458 */
mbed_official 573:ad23fe03a082 459 #define CAN_TXMAILBOX_0 ((uint8_t)0x00)
mbed_official 573:ad23fe03a082 460 #define CAN_TXMAILBOX_1 ((uint8_t)0x01)
mbed_official 573:ad23fe03a082 461 #define CAN_TXMAILBOX_2 ((uint8_t)0x02)
mbed_official 573:ad23fe03a082 462 /**
mbed_official 573:ad23fe03a082 463 * @}
mbed_official 573:ad23fe03a082 464 */
mbed_official 573:ad23fe03a082 465
mbed_official 573:ad23fe03a082 466 /**
mbed_official 573:ad23fe03a082 467 * @}
mbed_official 573:ad23fe03a082 468 */
mbed_official 573:ad23fe03a082 469
mbed_official 573:ad23fe03a082 470 /* Exported macro ------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 471 /** @defgroup CAN_Exported_Macros CAN Exported Macros
mbed_official 573:ad23fe03a082 472 * @{
mbed_official 573:ad23fe03a082 473 */
mbed_official 573:ad23fe03a082 474
mbed_official 573:ad23fe03a082 475 /** @brief Reset CAN handle state
mbed_official 573:ad23fe03a082 476 * @param __HANDLE__: specifies the CAN Handle.
mbed_official 573:ad23fe03a082 477 * @retval None
mbed_official 573:ad23fe03a082 478 */
mbed_official 573:ad23fe03a082 479 #define __HAL_CAN_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CAN_STATE_RESET)
mbed_official 573:ad23fe03a082 480
mbed_official 573:ad23fe03a082 481 /**
mbed_official 573:ad23fe03a082 482 * @brief Enable the specified CAN interrupts.
mbed_official 573:ad23fe03a082 483 * @param __HANDLE__: CAN handle
mbed_official 573:ad23fe03a082 484 * @param __INTERRUPT__: CAN Interrupt
mbed_official 573:ad23fe03a082 485 * @retval None
mbed_official 573:ad23fe03a082 486 */
mbed_official 573:ad23fe03a082 487 #define __HAL_CAN_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IER) |= (__INTERRUPT__))
mbed_official 573:ad23fe03a082 488
mbed_official 573:ad23fe03a082 489 /**
mbed_official 573:ad23fe03a082 490 * @brief Disable the specified CAN interrupts.
mbed_official 573:ad23fe03a082 491 * @param __HANDLE__: CAN handle
mbed_official 573:ad23fe03a082 492 * @param __INTERRUPT__: CAN Interrupt
mbed_official 573:ad23fe03a082 493 * @retval None
mbed_official 573:ad23fe03a082 494 */
mbed_official 573:ad23fe03a082 495 #define __HAL_CAN_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IER) &= ~(__INTERRUPT__))
mbed_official 573:ad23fe03a082 496
mbed_official 573:ad23fe03a082 497 /**
mbed_official 573:ad23fe03a082 498 * @brief Return the number of pending received messages.
mbed_official 573:ad23fe03a082 499 * @param __HANDLE__: CAN handle
mbed_official 573:ad23fe03a082 500 * @param __FIFONUMBER__: Receive FIFO number, CAN_FIFO0 or CAN_FIFO1.
mbed_official 573:ad23fe03a082 501 * @retval The number of pending message.
mbed_official 573:ad23fe03a082 502 */
mbed_official 573:ad23fe03a082 503 #define __HAL_CAN_MSG_PENDING(__HANDLE__, __FIFONUMBER__) (((__FIFONUMBER__) == CAN_FIFO0)? \
mbed_official 573:ad23fe03a082 504 ((uint8_t)((__HANDLE__)->Instance->RF0R&(uint32_t)0x03)) : ((uint8_t)((__HANDLE__)->Instance->RF1R&(uint32_t)0x03)))
mbed_official 573:ad23fe03a082 505
mbed_official 573:ad23fe03a082 506 /** @brief Check whether the specified CAN flag is set or not.
mbed_official 573:ad23fe03a082 507 * @param __HANDLE__: CAN Handle
mbed_official 573:ad23fe03a082 508 * @param __FLAG__: specifies the flag to check.
mbed_official 573:ad23fe03a082 509 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 510 * @arg CAN_TSR_RQCP0: Request MailBox0 Flag
mbed_official 573:ad23fe03a082 511 * @arg CAN_TSR_RQCP1: Request MailBox1 Flag
mbed_official 573:ad23fe03a082 512 * @arg CAN_TSR_RQCP2: Request MailBox2 Flag
mbed_official 573:ad23fe03a082 513 * @arg CAN_FLAG_TXOK0: Transmission OK MailBox0 Flag
mbed_official 573:ad23fe03a082 514 * @arg CAN_FLAG_TXOK1: Transmission OK MailBox1 Flag
mbed_official 573:ad23fe03a082 515 * @arg CAN_FLAG_TXOK2: Transmission OK MailBox2 Flag
mbed_official 573:ad23fe03a082 516 * @arg CAN_FLAG_TME0: Transmit mailbox 0 empty Flag
mbed_official 573:ad23fe03a082 517 * @arg CAN_FLAG_TME1: Transmit mailbox 1 empty Flag
mbed_official 573:ad23fe03a082 518 * @arg CAN_FLAG_TME2: Transmit mailbox 2 empty Flag
mbed_official 573:ad23fe03a082 519 * @arg CAN_FLAG_FMP0: FIFO 0 Message Pending Flag
mbed_official 573:ad23fe03a082 520 * @arg CAN_FLAG_FF0: FIFO 0 Full Flag
mbed_official 573:ad23fe03a082 521 * @arg CAN_FLAG_FOV0: FIFO 0 Overrun Flag
mbed_official 573:ad23fe03a082 522 * @arg CAN_FLAG_FMP1: FIFO 1 Message Pending Flag
mbed_official 573:ad23fe03a082 523 * @arg CAN_FLAG_FF1: FIFO 1 Full Flag
mbed_official 573:ad23fe03a082 524 * @arg CAN_FLAG_FOV1: FIFO 1 Overrun Flag
mbed_official 573:ad23fe03a082 525 * @arg CAN_FLAG_WKU: Wake up Flag
mbed_official 573:ad23fe03a082 526 * @arg CAN_FLAG_SLAK: Sleep acknowledge Flag
mbed_official 573:ad23fe03a082 527 * @arg CAN_FLAG_SLAKI: Sleep acknowledge Flag
mbed_official 573:ad23fe03a082 528 * @arg CAN_FLAG_EWG: Error Warning Flag
mbed_official 573:ad23fe03a082 529 * @arg CAN_FLAG_EPV: Error Passive Flag
mbed_official 573:ad23fe03a082 530 * @arg CAN_FLAG_BOF: Bus-Off Flag
mbed_official 573:ad23fe03a082 531 * @retval The new state of __FLAG__ (TRUE or FALSE).
mbed_official 573:ad23fe03a082 532 */
mbed_official 573:ad23fe03a082 533 #define __HAL_CAN_GET_FLAG(__HANDLE__, __FLAG__) \
mbed_official 573:ad23fe03a082 534 ((((__FLAG__) >> 8) == 5)? ((((__HANDLE__)->Instance->TSR) & (1 << ((__FLAG__) & CAN_FLAG_MASK))) == (1 << ((__FLAG__) & CAN_FLAG_MASK))): \
mbed_official 573:ad23fe03a082 535 (((__FLAG__) >> 8) == 2)? ((((__HANDLE__)->Instance->RF0R) & (1 << ((__FLAG__) & CAN_FLAG_MASK))) == (1 << ((__FLAG__) & CAN_FLAG_MASK))): \
mbed_official 573:ad23fe03a082 536 (((__FLAG__) >> 8) == 4)? ((((__HANDLE__)->Instance->RF1R) & (1 << ((__FLAG__) & CAN_FLAG_MASK))) == (1 << ((__FLAG__) & CAN_FLAG_MASK))): \
mbed_official 573:ad23fe03a082 537 (((__FLAG__) >> 8) == 1)? ((((__HANDLE__)->Instance->MSR) & (1 << ((__FLAG__) & CAN_FLAG_MASK))) == (1 << ((__FLAG__) & CAN_FLAG_MASK))): \
mbed_official 573:ad23fe03a082 538 ((((__HANDLE__)->Instance->ESR) & (1 << ((__FLAG__) & CAN_FLAG_MASK))) == (1 << ((__FLAG__) & CAN_FLAG_MASK))))
mbed_official 573:ad23fe03a082 539
mbed_official 573:ad23fe03a082 540 /** @brief Clear the specified CAN pending flag.
mbed_official 573:ad23fe03a082 541 * @param __HANDLE__: CAN Handle.
mbed_official 573:ad23fe03a082 542 * @param __FLAG__: specifies the flag to check.
mbed_official 573:ad23fe03a082 543 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 544 * @arg CAN_TSR_RQCP0: Request MailBox0 Flag
mbed_official 573:ad23fe03a082 545 * @arg CAN_TSR_RQCP1: Request MailBox1 Flag
mbed_official 573:ad23fe03a082 546 * @arg CAN_TSR_RQCP2: Request MailBox2 Flag
mbed_official 573:ad23fe03a082 547 * @arg CAN_FLAG_TXOK0: Transmission OK MailBox0 Flag
mbed_official 573:ad23fe03a082 548 * @arg CAN_FLAG_TXOK1: Transmission OK MailBox1 Flag
mbed_official 573:ad23fe03a082 549 * @arg CAN_FLAG_TXOK2: Transmission OK MailBox2 Flag
mbed_official 573:ad23fe03a082 550 * @arg CAN_FLAG_TME0: Transmit mailbox 0 empty Flag
mbed_official 573:ad23fe03a082 551 * @arg CAN_FLAG_TME1: Transmit mailbox 1 empty Flag
mbed_official 573:ad23fe03a082 552 * @arg CAN_FLAG_TME2: Transmit mailbox 2 empty Flag
mbed_official 573:ad23fe03a082 553 * @arg CAN_FLAG_FMP0: FIFO 0 Message Pending Flag
mbed_official 573:ad23fe03a082 554 * @arg CAN_FLAG_FF0: FIFO 0 Full Flag
mbed_official 573:ad23fe03a082 555 * @arg CAN_FLAG_FOV0: FIFO 0 Overrun Flag
mbed_official 573:ad23fe03a082 556 * @arg CAN_FLAG_FMP1: FIFO 1 Message Pending Flag
mbed_official 573:ad23fe03a082 557 * @arg CAN_FLAG_FF1: FIFO 1 Full Flag
mbed_official 573:ad23fe03a082 558 * @arg CAN_FLAG_FOV1: FIFO 1 Overrun Flag
mbed_official 573:ad23fe03a082 559 * @arg CAN_FLAG_WKU: Wake up Flag
mbed_official 573:ad23fe03a082 560 * @arg CAN_FLAG_SLAK: Sleep acknowledge Flag
mbed_official 573:ad23fe03a082 561 * @arg CAN_FLAG_SLAKI: Sleep acknowledge Flag
mbed_official 573:ad23fe03a082 562 * @arg CAN_FLAG_EWG: Error Warning Flag
mbed_official 573:ad23fe03a082 563 * @arg CAN_FLAG_EPV: Error Passive Flag
mbed_official 573:ad23fe03a082 564 * @arg CAN_FLAG_BOF: Bus-Off Flag
mbed_official 573:ad23fe03a082 565 * @retval The new state of __FLAG__ (TRUE or FALSE).
mbed_official 573:ad23fe03a082 566 */
mbed_official 573:ad23fe03a082 567 #define __HAL_CAN_CLEAR_FLAG(__HANDLE__, __FLAG__) \
mbed_official 573:ad23fe03a082 568 ((((__FLAG__) >> 8) == 5)? (((__HANDLE__)->Instance->TSR) = ~((uint32_t)1 << ((__FLAG__) & CAN_FLAG_MASK))): \
mbed_official 573:ad23fe03a082 569 (((__FLAG__) >> 8) == 2)? (((__HANDLE__)->Instance->RF0R) = ~((uint32_t)1 << ((__FLAG__) & CAN_FLAG_MASK))): \
mbed_official 573:ad23fe03a082 570 (((__FLAG__) >> 8) == 4)? (((__HANDLE__)->Instance->RF1R) = ~((uint32_t)1 << ((__FLAG__) & CAN_FLAG_MASK))): \
mbed_official 573:ad23fe03a082 571 (((__FLAG__) >> 8) == 1)? (((__HANDLE__)->Instance->MSR) = ~((uint32_t)1 << ((__FLAG__) & CAN_FLAG_MASK))): \
mbed_official 573:ad23fe03a082 572 (((__HANDLE__)->Instance->ESR) = ~((uint32_t)1 << ((__FLAG__) & CAN_FLAG_MASK))))
mbed_official 573:ad23fe03a082 573
mbed_official 573:ad23fe03a082 574 /** @brief Check if the specified CAN interrupt source is enabled or disabled.
mbed_official 573:ad23fe03a082 575 * @param __HANDLE__: CAN Handle
mbed_official 573:ad23fe03a082 576 * @param __INTERRUPT__: specifies the CAN interrupt source to check.
mbed_official 573:ad23fe03a082 577 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 578 * @arg CAN_IT_TME: Transmit mailbox empty interrupt enable
mbed_official 573:ad23fe03a082 579 * @arg CAN_IT_FMP0: FIFO0 message pending interrupt enable
mbed_official 573:ad23fe03a082 580 * @arg CAN_IT_FMP1: FIFO1 message pending interrupt enable
mbed_official 573:ad23fe03a082 581 * @retval The new state of __IT__ (TRUE or FALSE).
mbed_official 573:ad23fe03a082 582 */
mbed_official 573:ad23fe03a082 583 #define __HAL_CAN_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
mbed_official 573:ad23fe03a082 584
mbed_official 573:ad23fe03a082 585 /**
mbed_official 573:ad23fe03a082 586 * @brief Check the transmission status of a CAN Frame.
mbed_official 573:ad23fe03a082 587 * @param __HANDLE__: CAN Handle
mbed_official 573:ad23fe03a082 588 * @param __TRANSMITMAILBOX__: the number of the mailbox that is used for transmission.
mbed_official 573:ad23fe03a082 589 * @retval The new status of transmission (TRUE or FALSE).
mbed_official 573:ad23fe03a082 590 */
mbed_official 573:ad23fe03a082 591 #define __HAL_CAN_TRANSMIT_STATUS(__HANDLE__, __TRANSMITMAILBOX__)\
mbed_official 573:ad23fe03a082 592 (((__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)) :\
mbed_official 573:ad23fe03a082 593 ((__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)) :\
mbed_official 573:ad23fe03a082 594 ((((__HANDLE__)->Instance->TSR) & (CAN_TSR_RQCP2 | CAN_TSR_TXOK2 | CAN_TSR_TME2)) == (CAN_TSR_RQCP2 | CAN_TSR_TXOK2 | CAN_TSR_TME2)))
mbed_official 573:ad23fe03a082 595
mbed_official 573:ad23fe03a082 596 /**
mbed_official 573:ad23fe03a082 597 * @brief Release the specified receive FIFO.
mbed_official 573:ad23fe03a082 598 * @param __HANDLE__: CAN handle
mbed_official 573:ad23fe03a082 599 * @param __FIFONUMBER__: Receive FIFO number, CAN_FIFO0 or CAN_FIFO1.
mbed_official 573:ad23fe03a082 600 * @retval None
mbed_official 573:ad23fe03a082 601 */
mbed_official 573:ad23fe03a082 602 #define __HAL_CAN_FIFO_RELEASE(__HANDLE__, __FIFONUMBER__) (((__FIFONUMBER__) == CAN_FIFO0)? \
mbed_official 573:ad23fe03a082 603 ((__HANDLE__)->Instance->RF0R |= CAN_RF0R_RFOM0) : ((__HANDLE__)->Instance->RF1R |= CAN_RF1R_RFOM1))
mbed_official 573:ad23fe03a082 604
mbed_official 573:ad23fe03a082 605 /**
mbed_official 573:ad23fe03a082 606 * @brief Cancel a transmit request.
mbed_official 573:ad23fe03a082 607 * @param __HANDLE__: CAN Handle
mbed_official 573:ad23fe03a082 608 * @param __TRANSMITMAILBOX__: the number of the mailbox that is used for transmission.
mbed_official 573:ad23fe03a082 609 * @retval None
mbed_official 573:ad23fe03a082 610 */
mbed_official 573:ad23fe03a082 611 #define __HAL_CAN_CANCEL_TRANSMIT(__HANDLE__, __TRANSMITMAILBOX__)\
mbed_official 573:ad23fe03a082 612 (((__TRANSMITMAILBOX__) == CAN_TXMAILBOX_0)? ((__HANDLE__)->Instance->TSR |= CAN_TSR_ABRQ0) :\
mbed_official 573:ad23fe03a082 613 ((__TRANSMITMAILBOX__) == CAN_TXMAILBOX_1)? ((__HANDLE__)->Instance->TSR |= CAN_TSR_ABRQ1) :\
mbed_official 573:ad23fe03a082 614 ((__HANDLE__)->Instance->TSR |= CAN_TSR_ABRQ2))
mbed_official 573:ad23fe03a082 615
mbed_official 573:ad23fe03a082 616 /**
mbed_official 573:ad23fe03a082 617 * @brief Enable or disable the DBG Freeze for CAN.
mbed_official 573:ad23fe03a082 618 * @param __HANDLE__: CAN Handle
mbed_official 573:ad23fe03a082 619 * @param __NEWSTATE__: new state of the CAN peripheral.
mbed_official 573:ad23fe03a082 620 * This parameter can be: ENABLE (CAN reception/transmission is frozen
mbed_official 573:ad23fe03a082 621 * during debug. Reception FIFOs can still be accessed/controlled normally)
mbed_official 573:ad23fe03a082 622 * or DISABLE (CAN is working during debug).
mbed_official 573:ad23fe03a082 623 * @retval None
mbed_official 573:ad23fe03a082 624 */
mbed_official 573:ad23fe03a082 625 #define __HAL_CAN_DBG_FREEZE(__HANDLE__, __NEWSTATE__) (((__NEWSTATE__) == ENABLE)? \
mbed_official 573:ad23fe03a082 626 ((__HANDLE__)->Instance->MCR |= CAN_MCR_DBF) : ((__HANDLE__)->Instance->MCR &= ~CAN_MCR_DBF))
mbed_official 573:ad23fe03a082 627
mbed_official 573:ad23fe03a082 628 /**
mbed_official 573:ad23fe03a082 629 * @}
mbed_official 573:ad23fe03a082 630 */
mbed_official 573:ad23fe03a082 631
mbed_official 573:ad23fe03a082 632 /* Exported functions --------------------------------------------------------*/
mbed_official 573:ad23fe03a082 633 /** @addtogroup CAN_Exported_Functions
mbed_official 573:ad23fe03a082 634 * @{
mbed_official 573:ad23fe03a082 635 */
mbed_official 573:ad23fe03a082 636
mbed_official 573:ad23fe03a082 637 /** @addtogroup CAN_Exported_Functions_Group1
mbed_official 573:ad23fe03a082 638 * @{
mbed_official 573:ad23fe03a082 639 */
mbed_official 573:ad23fe03a082 640 /* Initialization/de-initialization functions ***********************************/
mbed_official 573:ad23fe03a082 641 HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef* hcan);
mbed_official 573:ad23fe03a082 642 HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef* hcan, CAN_FilterConfTypeDef* sFilterConfig);
mbed_official 573:ad23fe03a082 643 HAL_StatusTypeDef HAL_CAN_DeInit(CAN_HandleTypeDef* hcan);
mbed_official 573:ad23fe03a082 644 void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan);
mbed_official 573:ad23fe03a082 645 void HAL_CAN_MspDeInit(CAN_HandleTypeDef* hcan);
mbed_official 573:ad23fe03a082 646 /**
mbed_official 573:ad23fe03a082 647 * @}
mbed_official 573:ad23fe03a082 648 */
mbed_official 573:ad23fe03a082 649
mbed_official 573:ad23fe03a082 650 /** @addtogroup CAN_Exported_Functions_Group2
mbed_official 573:ad23fe03a082 651 * @{
mbed_official 573:ad23fe03a082 652 */
mbed_official 573:ad23fe03a082 653 /* I/O operation functions ******************************************************/
mbed_official 573:ad23fe03a082 654 HAL_StatusTypeDef HAL_CAN_Transmit(CAN_HandleTypeDef *hcan, uint32_t Timeout);
mbed_official 573:ad23fe03a082 655 HAL_StatusTypeDef HAL_CAN_Transmit_IT(CAN_HandleTypeDef *hcan);
mbed_official 573:ad23fe03a082 656 HAL_StatusTypeDef HAL_CAN_Receive(CAN_HandleTypeDef *hcan, uint8_t FIFONumber, uint32_t Timeout);
mbed_official 573:ad23fe03a082 657 HAL_StatusTypeDef HAL_CAN_Receive_IT(CAN_HandleTypeDef *hcan, uint8_t FIFONumber);
mbed_official 573:ad23fe03a082 658 HAL_StatusTypeDef HAL_CAN_Sleep(CAN_HandleTypeDef *hcan);
mbed_official 573:ad23fe03a082 659 HAL_StatusTypeDef HAL_CAN_WakeUp(CAN_HandleTypeDef *hcan);
mbed_official 573:ad23fe03a082 660 void HAL_CAN_IRQHandler(CAN_HandleTypeDef* hcan);
mbed_official 573:ad23fe03a082 661 void HAL_CAN_TxCpltCallback(CAN_HandleTypeDef* hcan);
mbed_official 573:ad23fe03a082 662 void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* hcan);
mbed_official 573:ad23fe03a082 663 void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan);
mbed_official 573:ad23fe03a082 664 /**
mbed_official 573:ad23fe03a082 665 * @}
mbed_official 573:ad23fe03a082 666 */
mbed_official 573:ad23fe03a082 667
mbed_official 573:ad23fe03a082 668 /** @addtogroup CAN_Exported_Functions_Group3
mbed_official 573:ad23fe03a082 669 * @{
mbed_official 573:ad23fe03a082 670 */
mbed_official 573:ad23fe03a082 671 /* Peripheral State functions ***************************************************/
mbed_official 573:ad23fe03a082 672 uint32_t HAL_CAN_GetError(CAN_HandleTypeDef *hcan);
mbed_official 573:ad23fe03a082 673 HAL_CAN_StateTypeDef HAL_CAN_GetState(CAN_HandleTypeDef* hcan);
mbed_official 573:ad23fe03a082 674 /**
mbed_official 573:ad23fe03a082 675 * @}
mbed_official 573:ad23fe03a082 676 */
mbed_official 573:ad23fe03a082 677
mbed_official 573:ad23fe03a082 678 /**
mbed_official 573:ad23fe03a082 679 * @}
mbed_official 573:ad23fe03a082 680 */
mbed_official 573:ad23fe03a082 681
mbed_official 573:ad23fe03a082 682 /* Private types -------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 683 /** @defgroup CAN_Private_Types CAN Private Types
mbed_official 573:ad23fe03a082 684 * @{
mbed_official 573:ad23fe03a082 685 */
mbed_official 573:ad23fe03a082 686
mbed_official 573:ad23fe03a082 687 /**
mbed_official 573:ad23fe03a082 688 * @}
mbed_official 573:ad23fe03a082 689 */
mbed_official 573:ad23fe03a082 690
mbed_official 573:ad23fe03a082 691 /* Private variables ---------------------------------------------------------*/
mbed_official 573:ad23fe03a082 692 /** @defgroup CAN_Private_Variables CAN Private Variables
mbed_official 573:ad23fe03a082 693 * @{
mbed_official 573:ad23fe03a082 694 */
mbed_official 573:ad23fe03a082 695
mbed_official 573:ad23fe03a082 696 /**
mbed_official 573:ad23fe03a082 697 * @}
mbed_official 573:ad23fe03a082 698 */
mbed_official 573:ad23fe03a082 699
mbed_official 573:ad23fe03a082 700 /* Private constants ---------------------------------------------------------*/
mbed_official 573:ad23fe03a082 701 /** @defgroup CAN_Private_Constants CAN Private Constants
mbed_official 573:ad23fe03a082 702 * @{
mbed_official 573:ad23fe03a082 703 */
mbed_official 573:ad23fe03a082 704 #define CAN_TXSTATUS_NOMAILBOX ((uint8_t)0x04) /*!< CAN cell did not provide CAN_TxStatus_NoMailBox */
mbed_official 573:ad23fe03a082 705 #define CAN_FLAG_MASK ((uint32_t)0x000000FF)
mbed_official 573:ad23fe03a082 706 /**
mbed_official 573:ad23fe03a082 707 * @}
mbed_official 573:ad23fe03a082 708 */
mbed_official 573:ad23fe03a082 709
mbed_official 573:ad23fe03a082 710 /* Private macros ------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 711 /** @defgroup CAN_Private_Macros CAN Private Macros
mbed_official 573:ad23fe03a082 712 * @{
mbed_official 573:ad23fe03a082 713 */
mbed_official 573:ad23fe03a082 714 #define IS_CAN_MODE(MODE) (((MODE) == CAN_MODE_NORMAL) || \
mbed_official 573:ad23fe03a082 715 ((MODE) == CAN_MODE_LOOPBACK)|| \
mbed_official 573:ad23fe03a082 716 ((MODE) == CAN_MODE_SILENT) || \
mbed_official 573:ad23fe03a082 717 ((MODE) == CAN_MODE_SILENT_LOOPBACK))
mbed_official 573:ad23fe03a082 718 #define IS_CAN_SJW(SJW) (((SJW) == CAN_SJW_1TQ) || ((SJW) == CAN_SJW_2TQ)|| \
mbed_official 573:ad23fe03a082 719 ((SJW) == CAN_SJW_3TQ) || ((SJW) == CAN_SJW_4TQ))
mbed_official 573:ad23fe03a082 720 #define IS_CAN_BS1(BS1) ((BS1) <= CAN_BS1_16TQ)
mbed_official 573:ad23fe03a082 721 #define IS_CAN_BS2(BS2) ((BS2) <= CAN_BS2_8TQ)
mbed_official 573:ad23fe03a082 722 #define IS_CAN_PRESCALER(PRESCALER) (((PRESCALER) >= 1) && ((PRESCALER) <= 1024))
mbed_official 573:ad23fe03a082 723 #define IS_CAN_FILTER_NUMBER(NUMBER) ((NUMBER) <= 27)
mbed_official 573:ad23fe03a082 724 #define IS_CAN_FILTER_MODE(MODE) (((MODE) == CAN_FILTERMODE_IDMASK) || \
mbed_official 573:ad23fe03a082 725 ((MODE) == CAN_FILTERMODE_IDLIST))
mbed_official 573:ad23fe03a082 726 #define IS_CAN_FILTER_SCALE(SCALE) (((SCALE) == CAN_FILTERSCALE_16BIT) || \
mbed_official 573:ad23fe03a082 727 ((SCALE) == CAN_FILTERSCALE_32BIT))
mbed_official 573:ad23fe03a082 728 #define IS_CAN_FILTER_FIFO(FIFO) (((FIFO) == CAN_FILTER_FIFO0) || \
mbed_official 573:ad23fe03a082 729 ((FIFO) == CAN_FILTER_FIFO1))
mbed_official 573:ad23fe03a082 730 #define IS_CAN_BANKNUMBER(BANKNUMBER) ((BANKNUMBER) <= 28)
mbed_official 573:ad23fe03a082 731
mbed_official 573:ad23fe03a082 732 #define IS_CAN_TRANSMITMAILBOX(TRANSMITMAILBOX) ((TRANSMITMAILBOX) <= ((uint8_t)0x02))
mbed_official 573:ad23fe03a082 733 #define IS_CAN_STDID(STDID) ((STDID) <= ((uint32_t)0x7FF))
mbed_official 573:ad23fe03a082 734 #define IS_CAN_EXTID(EXTID) ((EXTID) <= ((uint32_t)0x1FFFFFFF))
mbed_official 573:ad23fe03a082 735 #define IS_CAN_DLC(DLC) ((DLC) <= ((uint8_t)0x08))
mbed_official 573:ad23fe03a082 736
mbed_official 573:ad23fe03a082 737 #define IS_CAN_IDTYPE(IDTYPE) (((IDTYPE) == CAN_ID_STD) || \
mbed_official 573:ad23fe03a082 738 ((IDTYPE) == CAN_ID_EXT))
mbed_official 573:ad23fe03a082 739 #define IS_CAN_RTR(RTR) (((RTR) == CAN_RTR_DATA) || ((RTR) == CAN_RTR_REMOTE))
mbed_official 573:ad23fe03a082 740 #define IS_CAN_FIFO(FIFO) (((FIFO) == CAN_FIFO0) || ((FIFO) == CAN_FIFO1))
mbed_official 573:ad23fe03a082 741
mbed_official 573:ad23fe03a082 742 /**
mbed_official 573:ad23fe03a082 743 * @}
mbed_official 573:ad23fe03a082 744 */
mbed_official 573:ad23fe03a082 745
mbed_official 573:ad23fe03a082 746 /* Private functions ---------------------------------------------------------*/
mbed_official 573:ad23fe03a082 747 /** @defgroup CAN_Private_Functions CAN Private Functions
mbed_official 573:ad23fe03a082 748 * @{
mbed_official 573:ad23fe03a082 749 */
mbed_official 573:ad23fe03a082 750
mbed_official 573:ad23fe03a082 751 /**
mbed_official 573:ad23fe03a082 752 * @}
mbed_official 573:ad23fe03a082 753 */
mbed_official 573:ad23fe03a082 754 /**
mbed_official 573:ad23fe03a082 755 * @}
mbed_official 573:ad23fe03a082 756 */
mbed_official 573:ad23fe03a082 757
mbed_official 573:ad23fe03a082 758 /**
mbed_official 573:ad23fe03a082 759 * @}
mbed_official 573:ad23fe03a082 760 */
mbed_official 573:ad23fe03a082 761
mbed_official 573:ad23fe03a082 762 #ifdef __cplusplus
mbed_official 573:ad23fe03a082 763 }
mbed_official 573:ad23fe03a082 764 #endif
mbed_official 573:ad23fe03a082 765
mbed_official 573:ad23fe03a082 766 #endif /* __STM32F7xx_CAN_H */
mbed_official 573:ad23fe03a082 767
mbed_official 573:ad23fe03a082 768
mbed_official 573:ad23fe03a082 769 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/