Subversion Repositories LedShow

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 9
Line 4... Line 4...
4
  * @author  MCD Application Team
4
  * @author  MCD Application Team
5
  * @brief   Header file of IRDA HAL module.
5
  * @brief   Header file of IRDA HAL module.
6
  ******************************************************************************
6
  ******************************************************************************
7
  * @attention
7
  * @attention
8
  *
8
  *
9
  * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
9
  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
-
 
10
  * All rights reserved.</center></h2>
10
  *
11
  *
11
  * Redistribution and use in source and binary forms, with or without modification,
12
  * This software component is licensed by ST under BSD 3-Clause license,
12
  * are permitted provided that the following conditions are met:
13
  * the "License"; You may not use this file except in compliance with the
13
  *   1. Redistributions of source code must retain the above copyright notice,
-
 
14
  *      this list of conditions and the following disclaimer.
-
 
15
  *   2. Redistributions in binary form must reproduce the above copyright notice,
-
 
16
  *      this list of conditions and the following disclaimer in the documentation
-
 
17
  *      and/or other materials provided with the distribution.
14
  * License. You may obtain a copy of the License at:
18
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
-
 
19
  *      may be used to endorse or promote products derived from this software
15
  *                        opensource.org/licenses/BSD-3-Clause
20
  *      without specific prior written permission.
-
 
21
  *
-
 
22
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
 
23
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
 
24
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-
 
25
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-
 
26
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-
 
27
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-
 
28
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-
 
29
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-
 
30
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-
 
31
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
 
32
  *
16
  *
33
  ******************************************************************************
17
  ******************************************************************************
34
  */
18
  */
35
 
19
 
36
/* Define to prevent recursive inclusion -------------------------------------*/
20
/* Define to prevent recursive inclusion -------------------------------------*/
37
#ifndef __STM32F1xx_HAL_IRDA_H
21
#ifndef __STM32F1xx_HAL_IRDA_H
38
#define __STM32F1xx_HAL_IRDA_H
22
#define __STM32F1xx_HAL_IRDA_H
39
 
23
 
40
#ifdef __cplusplus
24
#ifdef __cplusplus
41
 extern "C" {
25
extern "C" {
42
#endif
26
#endif
43
 
27
 
44
/* Includes ------------------------------------------------------------------*/
28
/* Includes ------------------------------------------------------------------*/
45
#include "stm32f1xx_hal_def.h"
29
#include "stm32f1xx_hal_def.h"
46
 
30
 
Line 50... Line 34...
50
 
34
 
51
/** @addtogroup IRDA
35
/** @addtogroup IRDA
52
  * @{
36
  * @{
53
  */
37
  */
54
 
38
 
55
/* Exported types ------------------------------------------------------------*/
39
/* Exported types ------------------------------------------------------------*/
56
/** @defgroup IRDA_Exported_Types IRDA Exported Types
40
/** @defgroup IRDA_Exported_Types IRDA Exported Types
57
  * @{
41
  * @{
58
  */
42
  */
59
 
-
 
60
/**
43
/**
61
  * @brief IRDA Init Structure definition
44
  * @brief IRDA Init Structure definition
62
  */
45
  */
63
typedef struct
46
typedef struct
64
{
47
{
Line 68... Line 51...
68
                                           - FractionalDivider = ((IntegerDivider - ((uint32_t) IntegerDivider)) * 16) + 0.5 */
51
                                           - FractionalDivider = ((IntegerDivider - ((uint32_t) IntegerDivider)) * 16) + 0.5 */
69
 
52
 
70
  uint32_t WordLength;                /*!< Specifies the number of data bits transmitted or received in a frame.
53
  uint32_t WordLength;                /*!< Specifies the number of data bits transmitted or received in a frame.
71
                                           This parameter can be a value of @ref IRDA_Word_Length */
54
                                           This parameter can be a value of @ref IRDA_Word_Length */
72
 
55
 
73
 
-
 
74
  uint32_t Parity;                    /*!< Specifies the parity mode.
56
  uint32_t Parity;                    /*!< Specifies the parity mode.
75
                                           This parameter can be a value of @ref IRDA_Parity
57
                                           This parameter can be a value of @ref IRDA_Parity
76
                                           @note When parity is enabled, the computed parity is inserted
58
                                           @note When parity is enabled, the computed parity is inserted
77
                                                 at the MSB position of the transmitted data (9th bit when
59
                                                 at the MSB position of the transmitted data (9th bit when
78
                                                 the word length is set to 9 data bits; 8th bit when the
60
                                                 the word length is set to 9 data bits; 8th bit when the
79
                                                 word length is set to 8 data bits). */
61
                                                 word length is set to 8 data bits). */
80
 
62
 
81
  uint32_t Mode;                      /*!< Specifies whether the Receive or Transmit mode is enabled or disabled.
63
  uint32_t Mode;                      /*!< Specifies whether the Receive or Transmit mode is enabled or disabled.
82
                                           This parameter can be a value of @ref IRDA_Transfer_Mode */
64
                                           This parameter can be a value of @ref IRDA_Mode */
83
                                           
-
 
-
 
65
 
84
  uint8_t  Prescaler;                 /*!< Specifies the Prescaler value prescaler value to be programmed
66
  uint8_t  Prescaler;                 /*!< Specifies the Prescaler value to be programmed
85
                                           in the IrDA low-power Baud Register, for defining pulse width on which
67
                                           in the IrDA low-power Baud Register, for defining pulse width on which
86
                                           burst acceptance/rejection will be decided. This value is used as divisor
68
                                           burst acceptance/rejection will be decided. This value is used as divisor
87
                                           of system clock to achieve required pulse width. */
69
                                           of system clock to achieve required pulse width. */
88
 
70
 
89
  uint32_t IrDAMode;                  /*!< Specifies the IrDA mode
71
  uint32_t IrDAMode;                  /*!< Specifies the IrDA mode
90
                                           This parameter can be a value of @ref IRDA_Low_Power */
72
                                           This parameter can be a value of @ref IRDA_Low_Power */
91
}IRDA_InitTypeDef;
73
} IRDA_InitTypeDef;
92
 
74
 
93
/**
75
/**
94
  * @brief HAL IRDA State structures definition
76
  * @brief HAL IRDA State structures definition
95
  * @note  HAL IRDA State value is a combination of 2 different substates: gState and RxState.
77
  * @note  HAL IRDA State value is a combination of 2 different substates: gState and RxState.
96
  *        - gState contains IRDA state information related to global Handle management
78
  *        - gState contains IRDA state information related to global Handle management
97
  *          and also information related to Tx operations.
79
  *          and also information related to Tx operations.
98
  *          gState value coding follow below described bitmap :
80
  *          gState value coding follow below described bitmap :
99
  *          b7-b6  Error information
81
  *          b7-b6  Error information
100
  *             00 : No Error
82
  *             00 : No Error
101
  *             01 : (Not Used)
83
  *             01 : (Not Used)
102
  *             10 : Timeout
84
  *             10 : Timeout
103
  *             11 : Error
85
  *             11 : Error
104
  *          b5     IP initilisation status
86
  *          b5     IP initilisation status
Line 126... Line 108...
126
  *          b1     Rx state
108
  *          b1     Rx state
127
  *             0  : Ready (no Rx operation ongoing)
109
  *             0  : Ready (no Rx operation ongoing)
128
  *             1  : Busy (Rx operation ongoing)
110
  *             1  : Busy (Rx operation ongoing)
129
  *          b0     (not used)
111
  *          b0     (not used)
130
  *             x  : Should be set to 0.
112
  *             x  : Should be set to 0.
131
  */
113
  */
132
typedef enum
114
typedef enum
133
{
115
{
134
  HAL_IRDA_STATE_RESET             = 0x00U,    /*!< Peripheral is not yet Initialized
116
  HAL_IRDA_STATE_RESET             = 0x00U,    /*!< Peripheral is not yet Initialized
135
                                                   Value is allowed for gState and RxState */
117
                                                   Value is allowed for gState and RxState */
136
  HAL_IRDA_STATE_READY             = 0x20U,    /*!< Peripheral Initialized and ready for use
118
  HAL_IRDA_STATE_READY             = 0x20U,    /*!< Peripheral Initialized and ready for use
137
                                                   Value is allowed for gState and RxState */
119
                                                   Value is allowed for gState and RxState */
138
  HAL_IRDA_STATE_BUSY              = 0x24U,    /*!< An internal process is ongoing
120
  HAL_IRDA_STATE_BUSY              = 0x24U,    /*!< An internal process is ongoing
139
                                                   Value is allowed for gState only */
121
                                                   Value is allowed for gState only */
140
  HAL_IRDA_STATE_BUSY_TX           = 0x21U,    /*!< Data Transmission process is ongoing
122
  HAL_IRDA_STATE_BUSY_TX           = 0x21U,    /*!< Data Transmission process is ongoing
141
                                                   Value is allowed for gState only */
123
                                                   Value is allowed for gState only */
142
  HAL_IRDA_STATE_BUSY_RX           = 0x22U,    /*!< Data Reception process is ongoing
124
  HAL_IRDA_STATE_BUSY_RX           = 0x22U,    /*!< Data Reception process is ongoing
143
                                                   Value is allowed for RxState only */
125
                                                   Value is allowed for RxState only */
144
  HAL_IRDA_STATE_BUSY_TX_RX        = 0x23U,    /*!< Data Transmission and Reception process is ongoing
126
  HAL_IRDA_STATE_BUSY_TX_RX        = 0x23U,    /*!< Data Transmission and Reception process is ongoing
145
                                                   Not to be used for neither gState nor RxState.
127
                                                   Not to be used for neither gState nor RxState.
146
                                                   Value is result of combination (Or) between gState and RxState values */
128
                                                   Value is result of combination (Or) between gState and RxState values */
147
  HAL_IRDA_STATE_TIMEOUT           = 0xA0U,    /*!< Timeout state
129
  HAL_IRDA_STATE_TIMEOUT           = 0xA0U,    /*!< Timeout state
148
                                                   Value is allowed for gState only */
130
                                                   Value is allowed for gState only */
149
  HAL_IRDA_STATE_ERROR             = 0xE0U     /*!< Error
131
  HAL_IRDA_STATE_ERROR             = 0xE0U     /*!< Error
150
                                                   Value is allowed for gState only */
132
                                                   Value is allowed for gState only */
151
}HAL_IRDA_StateTypeDef;
133
} HAL_IRDA_StateTypeDef;
152
 
134
 
153
/**
135
/**
154
  * @brief IRDA handle Structure definition  
136
  * @brief IRDA handle Structure definition
155
  */  
137
  */
-
 
138
#if (USE_HAL_IRDA_REGISTER_CALLBACKS == 1)
-
 
139
typedef struct __IRDA_HandleTypeDef
-
 
140
#else
156
typedef struct
141
typedef struct
-
 
142
#endif  /* USE_HAL_IRDA_REGISTER_CALLBACKS */
157
{
143
{
158
  USART_TypeDef               *Instance;        /*!< USART registers base address       */
144
  USART_TypeDef               *Instance;        /*!<  USART registers base address       */
159
 
145
 
160
  IRDA_InitTypeDef            Init;             /*!< IRDA communication parameters      */
146
  IRDA_InitTypeDef            Init;             /*!<  IRDA communication parameters      */
161
 
147
 
162
  uint8_t                     *pTxBuffPtr;      /*!< Pointer to IRDA Tx transfer Buffer */
148
  uint8_t                     *pTxBuffPtr;      /*!<  Pointer to IRDA Tx transfer Buffer */
163
 
149
 
164
  uint16_t                    TxXferSize;       /*!< IRDA Tx Transfer size              */
150
  uint16_t                    TxXferSize;       /*!<  IRDA Tx Transfer size              */
165
 
151
 
166
  __IO uint16_t               TxXferCount;      /*!< IRDA Tx Transfer Counter           */
152
  __IO uint16_t               TxXferCount;      /*!<  IRDA Tx Transfer Counter           */
167
 
153
 
168
  uint8_t                     *pRxBuffPtr;      /*!< Pointer to IRDA Rx transfer Buffer */
154
  uint8_t                     *pRxBuffPtr;      /*!<  Pointer to IRDA Rx transfer Buffer */
169
 
155
 
170
  uint16_t                    RxXferSize;       /*!< IRDA Rx Transfer size              */
156
  uint16_t                    RxXferSize;       /*!<  IRDA Rx Transfer size              */
171
 
157
 
172
  __IO uint16_t               RxXferCount;      /*!< IRDA Rx Transfer Counter           */
158
  __IO uint16_t               RxXferCount;      /*!<  IRDA Rx Transfer Counter           */
173
 
159
 
174
  DMA_HandleTypeDef           *hdmatx;          /*!< IRDA Tx DMA Handle parameters      */
160
  DMA_HandleTypeDef           *hdmatx;          /*!<  IRDA Tx DMA Handle parameters      */
175
 
161
 
176
  DMA_HandleTypeDef           *hdmarx;          /*!< IRDA Rx DMA Handle parameters      */
162
  DMA_HandleTypeDef           *hdmarx;          /*!<  IRDA Rx DMA Handle parameters      */
177
 
163
 
178
  HAL_LockTypeDef             Lock;             /*!< Locking object                     */
164
  HAL_LockTypeDef             Lock;             /*!<  Locking object                     */
179
 
165
 
180
  __IO HAL_IRDA_StateTypeDef  gState;           /*!< IRDA state information related to global Handle management
166
  __IO HAL_IRDA_StateTypeDef  gState;           /*!<  IRDA state information related to global Handle management
181
                                                   and also related to Tx operations.
167
                                                   and also related to Tx operations.
182
                                                   This parameter can be a value of @ref HAL_IRDA_StateTypeDef */
168
                                                   This parameter can be a value of @ref HAL_IRDA_StateTypeDef */
183
 
169
 
184
  __IO HAL_IRDA_StateTypeDef  RxState;          /*!< IRDA state information related to Rx operations.
170
  __IO HAL_IRDA_StateTypeDef  RxState;          /*!<  IRDA state information related to Rx operations.
185
                                                   This parameter can be a value of @ref HAL_IRDA_StateTypeDef */
171
                                                   This parameter can be a value of @ref HAL_IRDA_StateTypeDef */
186
 
172
 
187
  __IO uint32_t               ErrorCode;        /*!< IRDA Error code                    */
173
  __IO uint32_t               ErrorCode;        /*!< IRDA Error code                    */
-
 
174
 
-
 
175
#if (USE_HAL_IRDA_REGISTER_CALLBACKS == 1)
-
 
176
  void (* TxHalfCpltCallback)(struct __IRDA_HandleTypeDef *hirda);        /*!< IRDA Tx Half Complete Callback        */
-
 
177
 
-
 
178
  void (* TxCpltCallback)(struct __IRDA_HandleTypeDef *hirda);            /*!< IRDA Tx Complete Callback             */
-
 
179
 
-
 
180
  void (* RxHalfCpltCallback)(struct __IRDA_HandleTypeDef *hirda);        /*!< IRDA Rx Half Complete Callback        */
-
 
181
 
-
 
182
  void (* RxCpltCallback)(struct __IRDA_HandleTypeDef *hirda);            /*!< IRDA Rx Complete Callback             */
-
 
183
 
-
 
184
  void (* ErrorCallback)(struct __IRDA_HandleTypeDef *hirda);             /*!< IRDA Error Callback                   */
-
 
185
 
-
 
186
  void (* AbortCpltCallback)(struct __IRDA_HandleTypeDef *hirda);         /*!< IRDA Abort Complete Callback          */
-
 
187
 
-
 
188
  void (* AbortTransmitCpltCallback)(struct __IRDA_HandleTypeDef *hirda); /*!< IRDA Abort Transmit Complete Callback */
-
 
189
 
-
 
190
  void (* AbortReceiveCpltCallback)(struct __IRDA_HandleTypeDef *hirda);  /*!< IRDA Abort Receive Complete Callback  */
-
 
191
 
-
 
192
 
-
 
193
  void (* MspInitCallback)(struct __IRDA_HandleTypeDef *hirda);           /*!< IRDA Msp Init callback                */
-
 
194
 
-
 
195
  void (* MspDeInitCallback)(struct __IRDA_HandleTypeDef *hirda);         /*!< IRDA Msp DeInit callback              */
-
 
196
#endif  /* USE_HAL_IRDA_REGISTER_CALLBACKS */
-
 
197
 
188
}IRDA_HandleTypeDef;
198
} IRDA_HandleTypeDef;
-
 
199
 
-
 
200
#if (USE_HAL_IRDA_REGISTER_CALLBACKS == 1)
-
 
201
/**
-
 
202
  * @brief  HAL IRDA Callback ID enumeration definition
-
 
203
  */
-
 
204
typedef enum
-
 
205
{
-
 
206
  HAL_IRDA_TX_HALFCOMPLETE_CB_ID         = 0x00U,    /*!< IRDA Tx Half Complete Callback ID        */
-
 
207
  HAL_IRDA_TX_COMPLETE_CB_ID             = 0x01U,    /*!< IRDA Tx Complete Callback ID             */
-
 
208
  HAL_IRDA_RX_HALFCOMPLETE_CB_ID         = 0x02U,    /*!< IRDA Rx Half Complete Callback ID        */
-
 
209
  HAL_IRDA_RX_COMPLETE_CB_ID             = 0x03U,    /*!< IRDA Rx Complete Callback ID             */
-
 
210
  HAL_IRDA_ERROR_CB_ID                   = 0x04U,    /*!< IRDA Error Callback ID                   */
-
 
211
  HAL_IRDA_ABORT_COMPLETE_CB_ID          = 0x05U,    /*!< IRDA Abort Complete Callback ID          */
-
 
212
  HAL_IRDA_ABORT_TRANSMIT_COMPLETE_CB_ID = 0x06U,    /*!< IRDA Abort Transmit Complete Callback ID */
-
 
213
  HAL_IRDA_ABORT_RECEIVE_COMPLETE_CB_ID  = 0x07U,    /*!< IRDA Abort Receive Complete Callback ID  */
-
 
214
 
-
 
215
  HAL_IRDA_MSPINIT_CB_ID                 = 0x08U,    /*!< IRDA MspInit callback ID                 */
-
 
216
  HAL_IRDA_MSPDEINIT_CB_ID               = 0x09U     /*!< IRDA MspDeInit callback ID               */
-
 
217
 
-
 
218
} HAL_IRDA_CallbackIDTypeDef;
-
 
219
 
-
 
220
/**
-
 
221
  * @brief  HAL IRDA Callback pointer definition
-
 
222
  */
-
 
223
typedef  void (*pIRDA_CallbackTypeDef)(IRDA_HandleTypeDef *hirda);  /*!< pointer to an IRDA callback function */
-
 
224
 
-
 
225
#endif /* USE_HAL_IRDA_REGISTER_CALLBACKS */
189
 
226
 
190
/**
227
/**
191
  * @}
228
  * @}
192
  */
229
  */
193
 
230
 
Line 195... Line 232...
195
/** @defgroup IRDA_Exported_Constants IRDA Exported constants
232
/** @defgroup IRDA_Exported_Constants IRDA Exported constants
196
  * @{
233
  * @{
197
  */
234
  */
198
/** @defgroup IRDA_Error_Code IRDA Error Code
235
/** @defgroup IRDA_Error_Code IRDA Error Code
199
  * @{
236
  * @{
200
  */
237
  */
201
#define HAL_IRDA_ERROR_NONE         0x00000000U   /*!< No error            */
238
#define HAL_IRDA_ERROR_NONE        0x00000000U   /*!< No error            */
202
#define HAL_IRDA_ERROR_PE           0x00000001U   /*!< Parity error        */
239
#define HAL_IRDA_ERROR_PE          0x00000001U   /*!< Parity error        */
203
#define HAL_IRDA_ERROR_NE           0x00000002U   /*!< Noise error         */
240
#define HAL_IRDA_ERROR_NE          0x00000002U   /*!< Noise error         */
204
#define HAL_IRDA_ERROR_FE           0x00000004U   /*!< Frame error         */
241
#define HAL_IRDA_ERROR_FE          0x00000004U   /*!< Frame error         */
205
#define HAL_IRDA_ERROR_ORE          0x00000008U   /*!< Overrun error       */
242
#define HAL_IRDA_ERROR_ORE         0x00000008U   /*!< Overrun error       */
206
#define HAL_IRDA_ERROR_DMA          0x00000010U   /*!< DMA transfer error  */
243
#define HAL_IRDA_ERROR_DMA         0x00000010U   /*!< DMA transfer error  */
-
 
244
#if (USE_HAL_IRDA_REGISTER_CALLBACKS == 1)
-
 
245
#define HAL_IRDA_ERROR_INVALID_CALLBACK   ((uint32_t)0x00000020U)   /*!< Invalid Callback error  */
-
 
246
#endif /* USE_HAL_IRDA_REGISTER_CALLBACKS */
207
/**
247
/**
208
  * @}
248
  * @}
209
  */
249
  */
210
 
250
 
211
/** @defgroup IRDA_Word_Length IRDA Word Length
251
/** @defgroup IRDA_Word_Length IRDA Word Length
212
  * @{
252
  * @{
213
  */
253
  */
214
#define IRDA_WORDLENGTH_8B                  0x00000000U
254
#define IRDA_WORDLENGTH_8B         0x00000000U
215
#define IRDA_WORDLENGTH_9B                  ((uint32_t)USART_CR1_M)
255
#define IRDA_WORDLENGTH_9B         ((uint32_t)USART_CR1_M)
216
/**
256
/**
217
  * @}
257
  * @}
218
  */
258
  */
219
 
259
 
220
/** @defgroup IRDA_Parity IRDA Parity
260
/** @defgroup IRDA_Parity  IRDA Parity
221
  * @{
261
  * @{
222
  */
262
  */
223
#define IRDA_PARITY_NONE                    0x00000000U
263
#define IRDA_PARITY_NONE           0x00000000U
224
#define IRDA_PARITY_EVEN                    ((uint32_t)USART_CR1_PCE)
264
#define IRDA_PARITY_EVEN           ((uint32_t)USART_CR1_PCE)
225
#define IRDA_PARITY_ODD                     ((uint32_t)(USART_CR1_PCE | USART_CR1_PS)) 
265
#define IRDA_PARITY_ODD            ((uint32_t)(USART_CR1_PCE | USART_CR1_PS))
226
/**
266
/**
227
  * @}
267
  * @}
228
  */
268
  */
229
 
269
 
230
/** @defgroup IRDA_Transfer_Mode IRDA Transfer Mode
270
/** @defgroup IRDA_Mode IRDA Transfer Mode
231
  * @{
271
  * @{
232
  */
272
  */
233
#define IRDA_MODE_RX                        ((uint32_t)USART_CR1_RE)
273
#define IRDA_MODE_RX               ((uint32_t)USART_CR1_RE)
234
#define IRDA_MODE_TX                        ((uint32_t)USART_CR1_TE)
274
#define IRDA_MODE_TX               ((uint32_t)USART_CR1_TE)
235
#define IRDA_MODE_TX_RX                     ((uint32_t)(USART_CR1_TE |USART_CR1_RE))
275
#define IRDA_MODE_TX_RX            ((uint32_t)(USART_CR1_TE |USART_CR1_RE))
236
/**
276
/**
237
  * @}
277
  * @}
238
  */
278
  */
239
 
279
 
240
/** @defgroup IRDA_Low_Power IRDA Low Power
280
/** @defgroup IRDA_Low_Power IRDA Low Power
241
  * @{
281
  * @{
242
  */
282
  */
243
#define IRDA_POWERMODE_LOWPOWER                  ((uint32_t)USART_CR3_IRLP)
283
#define IRDA_POWERMODE_LOWPOWER    ((uint32_t)USART_CR3_IRLP)
244
#define IRDA_POWERMODE_NORMAL                    0x00000000U
284
#define IRDA_POWERMODE_NORMAL      0x00000000U
245
/**
285
/**
246
  * @}
286
  * @}
247
  */
287
  */
248
 
288
 
249
/** @defgroup IRDA_Flags IRDA Flags
289
/** @defgroup IRDA_Flags IRDA Flags
250
  *        Elements values convention: 0xXXXX
290
  *        Elements values convention: 0xXXXX
251
  *           - 0xXXXX  : Flag mask in the SR register
291
  *           - 0xXXXX  : Flag mask in the SR register
252
  * @{
292
  * @{
253
  */
293
  */
254
#define IRDA_FLAG_TXE                       ((uint32_t)USART_SR_TXE)
294
#define IRDA_FLAG_TXE              ((uint32_t)USART_SR_TXE)
255
#define IRDA_FLAG_TC                        ((uint32_t)USART_SR_TC)
295
#define IRDA_FLAG_TC               ((uint32_t)USART_SR_TC)
256
#define IRDA_FLAG_RXNE                      ((uint32_t)USART_SR_RXNE)
296
#define IRDA_FLAG_RXNE             ((uint32_t)USART_SR_RXNE)
257
#define IRDA_FLAG_IDLE                      ((uint32_t)USART_SR_IDLE)
297
#define IRDA_FLAG_IDLE             ((uint32_t)USART_SR_IDLE)
258
#define IRDA_FLAG_ORE                       ((uint32_t)USART_SR_ORE)
298
#define IRDA_FLAG_ORE              ((uint32_t)USART_SR_ORE)
259
#define IRDA_FLAG_NE                        ((uint32_t)USART_SR_NE)
299
#define IRDA_FLAG_NE               ((uint32_t)USART_SR_NE)
260
#define IRDA_FLAG_FE                        ((uint32_t)USART_SR_FE)
300
#define IRDA_FLAG_FE               ((uint32_t)USART_SR_FE)
261
#define IRDA_FLAG_PE                        ((uint32_t)USART_SR_PE)
301
#define IRDA_FLAG_PE               ((uint32_t)USART_SR_PE)
262
/**
302
/**
263
  * @}
303
  * @}
264
  */
304
  */
265
 
305
 
266
/** @defgroup IRDA_Interrupt_definition IRDA Interrupt Definitions
306
/** @defgroup IRDA_Interrupt_definition IRDA Interrupt Definitions
Line 270... Line 310...
270
  *                 - 01: CR1 register
310
  *                 - 01: CR1 register
271
  *                 - 10: CR2 register
311
  *                 - 10: CR2 register
272
  *                 - 11: CR3 register
312
  *                 - 11: CR3 register
273
  * @{
313
  * @{
274
  */
314
  */
275
#define IRDA_IT_PE                          ((uint32_t)(IRDA_CR1_REG_INDEX << 28U | USART_CR1_PEIE))
315
#define IRDA_IT_PE                 ((uint32_t)(IRDA_CR1_REG_INDEX << 28U | USART_CR1_PEIE))
276
#define IRDA_IT_TXE                         ((uint32_t)(IRDA_CR1_REG_INDEX << 28U | USART_CR1_TXEIE))
316
#define IRDA_IT_TXE                ((uint32_t)(IRDA_CR1_REG_INDEX << 28U | USART_CR1_TXEIE))
277
#define IRDA_IT_TC                          ((uint32_t)(IRDA_CR1_REG_INDEX << 28U | USART_CR1_TCIE))
317
#define IRDA_IT_TC                 ((uint32_t)(IRDA_CR1_REG_INDEX << 28U | USART_CR1_TCIE))
278
#define IRDA_IT_RXNE                        ((uint32_t)(IRDA_CR1_REG_INDEX << 28U | USART_CR1_RXNEIE))
318
#define IRDA_IT_RXNE               ((uint32_t)(IRDA_CR1_REG_INDEX << 28U | USART_CR1_RXNEIE))
279
#define IRDA_IT_IDLE                        ((uint32_t)(IRDA_CR1_REG_INDEX << 28U | USART_CR1_IDLEIE))
319
#define IRDA_IT_IDLE               ((uint32_t)(IRDA_CR1_REG_INDEX << 28U | USART_CR1_IDLEIE))
280
 
320
 
281
#define IRDA_IT_LBD                         ((uint32_t)(IRDA_CR2_REG_INDEX << 28U | USART_CR2_LBDIE))
321
#define IRDA_IT_LBD                ((uint32_t)(IRDA_CR2_REG_INDEX << 28U | USART_CR2_LBDIE))
282
 
322
 
283
#define IRDA_IT_CTS                         ((uint32_t)(IRDA_CR3_REG_INDEX << 28U | USART_CR3_CTSIE))
323
#define IRDA_IT_CTS                ((uint32_t)(IRDA_CR3_REG_INDEX << 28U | USART_CR3_CTSIE))
284
#define IRDA_IT_ERR                         ((uint32_t)(IRDA_CR3_REG_INDEX << 28U | USART_CR3_EIE))
324
#define IRDA_IT_ERR                ((uint32_t)(IRDA_CR3_REG_INDEX << 28U | USART_CR3_EIE))
285
/**
325
/**
286
  * @}
326
  * @}
287
  */
327
  */
288
 
328
 
289
/**
329
/**
Line 294... Line 334...
294
/** @defgroup IRDA_Exported_Macros IRDA Exported Macros
334
/** @defgroup IRDA_Exported_Macros IRDA Exported Macros
295
  * @{
335
  * @{
296
  */
336
  */
297
 
337
 
298
/** @brief Reset IRDA handle gstate & RxState
338
/** @brief Reset IRDA handle gstate & RxState
299
  * @param  __HANDLE__: specifies the IRDA Handle.
339
  * @param  __HANDLE__ specifies the IRDA Handle.
300
  *         IRDA Handle selects the USARTx or UARTy peripheral
340
  *         IRDA Handle selects the USARTx or UARTy peripheral
301
  *         (USART,UART availability and x,y values depending on device).
341
  *         (USART,UART availability and x,y values depending on device).
-
 
342
  * @retval None
302
  */
343
  */
-
 
344
#if USE_HAL_IRDA_REGISTER_CALLBACKS == 1
303
#define __HAL_IRDA_RESET_HANDLE_STATE(__HANDLE__)  do{                                                   \
345
#define __HAL_IRDA_RESET_HANDLE_STATE(__HANDLE__)  do{                                                   \
304
                                                       (__HANDLE__)->gState = HAL_IRDA_STATE_RESET;      \
346
                                                       (__HANDLE__)->gState = HAL_IRDA_STATE_RESET;      \
305
                                                       (__HANDLE__)->RxState = HAL_IRDA_STATE_RESET;     \
347
                                                       (__HANDLE__)->RxState = HAL_IRDA_STATE_RESET;     \
-
 
348
                                                       (__HANDLE__)->MspInitCallback = NULL;             \
-
 
349
                                                       (__HANDLE__)->MspDeInitCallback = NULL;           \
306
                                                     } while(0U)
350
                                                     } while(0U)
-
 
351
#else
-
 
352
#define __HAL_IRDA_RESET_HANDLE_STATE(__HANDLE__)  do{                                                   \
-
 
353
                                                       (__HANDLE__)->gState = HAL_IRDA_STATE_RESET;      \
-
 
354
                                                       (__HANDLE__)->RxState = HAL_IRDA_STATE_RESET;     \
-
 
355
                                                     } while(0U)
-
 
356
#endif /*USE_HAL_IRDA_REGISTER_CALLBACKS  */
307
 
357
 
308
/** @brief  Flush the IRDA DR register
358
/** @brief  Flush the IRDA DR register
309
  * @param  __HANDLE__: specifies the USART Handle.
359
  * @param  __HANDLE__ specifies the IRDA Handle.
310
  *         IRDA Handle selects the USARTx or UARTy peripheral
360
  *         IRDA Handle selects the USARTx or UARTy peripheral
311
  *         (USART,UART availability and x,y values depending on device).
361
  *         (USART,UART availability and x,y values depending on device).
-
 
362
  * @retval None
312
  */
363
  */
313
#define __HAL_IRDA_FLUSH_DRREGISTER(__HANDLE__) ((__HANDLE__)->Instance->DR)
364
#define __HAL_IRDA_FLUSH_DRREGISTER(__HANDLE__) ((__HANDLE__)->Instance->DR)
314
 
365
 
315
/** @brief  Check whether the specified IRDA flag is set or not.
366
/** @brief  Check whether the specified IRDA flag is set or not.
316
  * @param  __HANDLE__: specifies the IRDA Handle.
367
  * @param  __HANDLE__ specifies the IRDA Handle.
317
  *         IRDA Handle selects the USARTx or UARTy peripheral
368
  *         IRDA Handle selects the USARTx or UARTy peripheral
318
  *         (USART,UART availability and x,y values depending on device).
369
  *         (USART,UART availability and x,y values depending on device).
319
  * @param  __FLAG__: specifies the flag to check.
370
  * @param  __FLAG__ specifies the flag to check.
320
  *        This parameter can be one of the following values:
371
  *        This parameter can be one of the following values:
321
  *            @arg IRDA_FLAG_TXE:  Transmit data register empty flag
372
  *            @arg IRDA_FLAG_TXE:  Transmit data register empty flag
322
  *            @arg IRDA_FLAG_TC:   Transmission Complete flag
373
  *            @arg IRDA_FLAG_TC:   Transmission Complete flag
323
  *            @arg IRDA_FLAG_RXNE: Receive data register not empty flag
374
  *            @arg IRDA_FLAG_RXNE: Receive data register not empty flag
324
  *            @arg IRDA_FLAG_IDLE: Idle Line detection flag
375
  *            @arg IRDA_FLAG_IDLE: Idle Line detection flag
Line 329... Line 380...
329
  * @retval The new state of __FLAG__ (TRUE or FALSE).
380
  * @retval The new state of __FLAG__ (TRUE or FALSE).
330
  */
381
  */
331
#define __HAL_IRDA_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
382
#define __HAL_IRDA_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
332
 
383
 
333
/** @brief  Clear the specified IRDA pending flag.
384
/** @brief  Clear the specified IRDA pending flag.
334
  * @param  __HANDLE__: specifies the IRDA Handle.
385
  * @param  __HANDLE__ specifies the IRDA Handle.
335
  *         IRDA Handle selects the USARTx or UARTy peripheral
386
  *         IRDA Handle selects the USARTx or UARTy peripheral
336
  *         (USART,UART availability and x,y values depending on device).
387
  *         (USART,UART availability and x,y values depending on device).
337
  * @param  __FLAG__: specifies the flag to check.
388
  * @param  __FLAG__ specifies the flag to check.
338
  *          This parameter can be any combination of the following values:
389
  *          This parameter can be any combination of the following values:
339
  *            @arg IRDA_FLAG_TC:   Transmission Complete flag.
390
  *            @arg IRDA_FLAG_TC:   Transmission Complete flag.
340
  *            @arg IRDA_FLAG_RXNE: Receive data register not empty flag.
391
  *            @arg IRDA_FLAG_RXNE: Receive data register not empty flag.
341
  *  
392
  *
342
  * @note   PE (Parity error), FE (Framing error), NE (Noise error), ORE (OverRun
393
  * @note   PE (Parity error), FE (Framing error), NE (Noise error), ORE (OverRun
343
  *          error) and IDLE (Idle line detected) flags are cleared by software
394
  *          error) and IDLE (Idle line detected) flags are cleared by software
344
  *          sequence: a read operation to USART_SR register followed by a read
395
  *          sequence: a read operation to USART_SR register followed by a read
345
  *          operation to USART_DR register.
396
  *          operation to USART_DR register.
346
  * @note   RXNE flag can be also cleared by a read to the USART_DR register.
397
  * @note   RXNE flag can be also cleared by a read to the USART_DR register.
347
  * @note   TC flag can be also cleared by software sequence: a read operation to
398
  * @note   TC flag can be also cleared by software sequence: a read operation to
348
  *          USART_SR register followed by a write operation to USART_DR register.
399
  *          USART_SR register followed by a write operation to USART_DR register.
349
  * @note   TXE flag is cleared only by a write to the USART_DR register.
400
  * @note   TXE flag is cleared only by a write to the USART_DR register.
350
  *  
401
  * @retval None
351
  */
402
  */
352
#define __HAL_IRDA_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__))
403
#define __HAL_IRDA_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__))
353
 
404
 
354
/** @brief  Clear the IRDA PE pending flag.
405
/** @brief  Clear the IRDA PE pending flag.
355
  * @param  __HANDLE__: specifies the IRDA Handle.
406
  * @param  __HANDLE__ specifies the IRDA Handle.
356
  *         IRDA Handle selects the USARTx or UARTy peripheral
407
  *         IRDA Handle selects the USARTx or UARTy peripheral
357
  *         (USART,UART availability and x,y values depending on device).
408
  *         (USART,UART availability and x,y values depending on device).
-
 
409
  * @retval None
358
  */
410
  */
359
#define __HAL_IRDA_CLEAR_PEFLAG(__HANDLE__)     \
411
#define __HAL_IRDA_CLEAR_PEFLAG(__HANDLE__)     \
360
do{                                             \
412
  do{                                           \
361
    __IO uint32_t tmpreg = 0x00U;               \
413
    __IO uint32_t tmpreg = 0x00U;               \
362
    tmpreg = (__HANDLE__)->Instance->SR;        \
414
    tmpreg = (__HANDLE__)->Instance->SR;        \
363
    tmpreg = (__HANDLE__)->Instance->DR;        \
415
    tmpreg = (__HANDLE__)->Instance->DR;        \
364
    UNUSED(tmpreg);                             \
416
    UNUSED(tmpreg);                             \
365
  } while(0U)
417
  } while(0U)
366
 
418
 
367
/** @brief  Clear the IRDA FE pending flag.
419
/** @brief  Clear the IRDA FE pending flag.
368
  * @param  __HANDLE__: specifies the IRDA Handle.
420
  * @param  __HANDLE__ specifies the IRDA Handle.
369
  *         IRDA Handle selects the USARTx or UARTy peripheral
421
  *         IRDA Handle selects the USARTx or UARTy peripheral
370
  *         (USART,UART availability and x,y values depending on device).
422
  *         (USART,UART availability and x,y values depending on device).
-
 
423
  * @retval None
371
  */
424
  */
372
#define __HAL_IRDA_CLEAR_FEFLAG(__HANDLE__) __HAL_IRDA_CLEAR_PEFLAG(__HANDLE__)
425
#define __HAL_IRDA_CLEAR_FEFLAG(__HANDLE__) __HAL_IRDA_CLEAR_PEFLAG(__HANDLE__)
373
 
426
 
374
/** @brief  Clear the IRDA NE pending flag.
427
/** @brief  Clear the IRDA NE pending flag.
375
  * @param  __HANDLE__: specifies the IRDA Handle.
428
  * @param  __HANDLE__ specifies the IRDA Handle.
376
  *         IRDA Handle selects the USARTx or UARTy peripheral
429
  *         IRDA Handle selects the USARTx or UARTy peripheral
377
  *         (USART,UART availability and x,y values depending on device).
430
  *         (USART,UART availability and x,y values depending on device).
-
 
431
  * @retval None
378
  */
432
  */
379
#define __HAL_IRDA_CLEAR_NEFLAG(__HANDLE__) __HAL_IRDA_CLEAR_PEFLAG(__HANDLE__)
433
#define __HAL_IRDA_CLEAR_NEFLAG(__HANDLE__) __HAL_IRDA_CLEAR_PEFLAG(__HANDLE__)
380
 
434
 
381
/** @brief  Clear the IRDA ORE pending flag.
435
/** @brief  Clear the IRDA ORE pending flag.
382
  * @param  __HANDLE__: specifies the IRDA Handle.
436
  * @param  __HANDLE__ specifies the IRDA Handle.
383
  *         IRDA Handle selects the USARTx or UARTy peripheral
437
  *         IRDA Handle selects the USARTx or UARTy peripheral
384
  *         (USART,UART availability and x,y values depending on device).
438
  *         (USART,UART availability and x,y values depending on device).
-
 
439
  * @retval None
385
  */
440
  */
386
#define __HAL_IRDA_CLEAR_OREFLAG(__HANDLE__) __HAL_IRDA_CLEAR_PEFLAG(__HANDLE__)
441
#define __HAL_IRDA_CLEAR_OREFLAG(__HANDLE__) __HAL_IRDA_CLEAR_PEFLAG(__HANDLE__)
387
 
442
 
388
/** @brief  Clear the IRDA IDLE pending flag.
443
/** @brief  Clear the IRDA IDLE pending flag.
389
  * @param  __HANDLE__: specifies the IRDA Handle.
444
  * @param  __HANDLE__ specifies the IRDA Handle.
390
  *         IRDA Handle selects the USARTx or UARTy peripheral
445
  *         IRDA Handle selects the USARTx or UARTy peripheral
391
  *         (USART,UART availability and x,y values depending on device).
446
  *         (USART,UART availability and x,y values depending on device).
-
 
447
  * @retval None
392
  */
448
  */
393
#define __HAL_IRDA_CLEAR_IDLEFLAG(__HANDLE__) __HAL_IRDA_CLEAR_PEFLAG(__HANDLE__)
449
#define __HAL_IRDA_CLEAR_IDLEFLAG(__HANDLE__) __HAL_IRDA_CLEAR_PEFLAG(__HANDLE__)
394
 
450
 
395
/** @brief  Enable the specified IRDA interrupt.
451
/** @brief  Enable the specified IRDA interrupt.
396
  * @param  __HANDLE__: specifies the IRDA Handle.
452
  * @param  __HANDLE__ specifies the IRDA Handle.
397
  *         IRDA Handle selects the USARTx or UARTy peripheral
453
  *         IRDA Handle selects the USARTx or UARTy peripheral
398
  *         (USART,UART availability and x,y values depending on device).
454
  *         (USART,UART availability and x,y values depending on device).
399
  * @param  __INTERRUPT__: specifies the IRDA interrupt source to enable.
455
  * @param  __INTERRUPT__ specifies the IRDA interrupt source to enable.
400
  *          This parameter can be one of the following values:
456
  *          This parameter can be one of the following values:
401
  *            @arg IRDA_IT_TXE:  Transmit Data Register empty interrupt
457
  *            @arg IRDA_IT_TXE:  Transmit Data Register empty interrupt
402
  *            @arg IRDA_IT_TC:   Transmission complete interrupt
458
  *            @arg IRDA_IT_TC:   Transmission complete interrupt
403
  *            @arg IRDA_IT_RXNE: Receive Data register not empty interrupt
459
  *            @arg IRDA_IT_RXNE: Receive Data register not empty interrupt
404
  *            @arg IRDA_IT_IDLE: Idle line detection interrupt
460
  *            @arg IRDA_IT_IDLE: Idle line detection interrupt
405
  *            @arg IRDA_IT_PE:   Parity Error interrupt
461
  *            @arg IRDA_IT_PE:   Parity Error interrupt
406
  *            @arg IRDA_IT_ERR:  Error interrupt(Frame error, noise error, overrun error)
462
  *            @arg IRDA_IT_ERR:  Error interrupt(Frame error, noise error, overrun error)
-
 
463
  * @retval None
407
  */
464
  */
408
#define __HAL_IRDA_ENABLE_IT(__HANDLE__, __INTERRUPT__)   ((((__INTERRUPT__) >> 28U) == IRDA_CR1_REG_INDEX)? ((__HANDLE__)->Instance->CR1 |= ((__INTERRUPT__) & IRDA_IT_MASK)): \
465
#define __HAL_IRDA_ENABLE_IT(__HANDLE__, __INTERRUPT__)   ((((__INTERRUPT__) >> 28U) == IRDA_CR1_REG_INDEX)? ((__HANDLE__)->Instance->CR1 |= ((__INTERRUPT__) & IRDA_IT_MASK)): \
409
                                                           (((__INTERRUPT__) >> 28U) == IRDA_CR2_REG_INDEX)? ((__HANDLE__)->Instance->CR2 |=  ((__INTERRUPT__) & IRDA_IT_MASK)): \
466
                                                           (((__INTERRUPT__) >> 28U) == IRDA_CR2_REG_INDEX)? ((__HANDLE__)->Instance->CR2 |=  ((__INTERRUPT__) & IRDA_IT_MASK)): \
410
                                                           ((__HANDLE__)->Instance->CR3 |= ((__INTERRUPT__) & IRDA_IT_MASK)))
467
                                                            ((__HANDLE__)->Instance->CR3 |= ((__INTERRUPT__) & IRDA_IT_MASK)))
411
/** @brief  Disable the specified IRDA interrupt.
468
/** @brief  Disable the specified IRDA interrupt.
412
  * @param  __HANDLE__: specifies the IRDA Handle.
469
  * @param  __HANDLE__ specifies the IRDA Handle.
413
  *         IRDA Handle selects the USARTx or UARTy peripheral
470
  *         IRDA Handle selects the USARTx or UARTy peripheral
414
  *         (USART,UART availability and x,y values depending on device).
471
  *         (USART,UART availability and x,y values depending on device).
415
  * @param  __INTERRUPT__: specifies the IRDA interrupt source to disable.
472
  * @param  __INTERRUPT__ specifies the IRDA interrupt source to disable.
416
  *          This parameter can be one of the following values:
473
  *          This parameter can be one of the following values:
417
  *            @arg IRDA_IT_TXE:  Transmit Data Register empty interrupt
474
  *            @arg IRDA_IT_TXE:  Transmit Data Register empty interrupt
418
  *            @arg IRDA_IT_TC:   Transmission complete interrupt
475
  *            @arg IRDA_IT_TC:   Transmission complete interrupt
419
  *            @arg IRDA_IT_RXNE: Receive Data register not empty interrupt
476
  *            @arg IRDA_IT_RXNE: Receive Data register not empty interrupt
420
  *            @arg IRDA_IT_IDLE: Idle line detection interrupt
477
  *            @arg IRDA_IT_IDLE: Idle line detection interrupt
421
  *            @arg IRDA_IT_PE:   Parity Error interrupt
478
  *            @arg IRDA_IT_PE:   Parity Error interrupt
422
  *            @arg IRDA_IT_ERR:  Error interrupt(Frame error, noise error, overrun error)
479
  *            @arg IRDA_IT_ERR:  Error interrupt(Frame error, noise error, overrun error)
-
 
480
  * @retval None
423
  */
481
  */
424
#define __HAL_IRDA_DISABLE_IT(__HANDLE__, __INTERRUPT__)  ((((__INTERRUPT__) >> 28U) == IRDA_CR1_REG_INDEX)? ((__HANDLE__)->Instance->CR1 &= ~((__INTERRUPT__) & IRDA_IT_MASK)): \
482
#define __HAL_IRDA_DISABLE_IT(__HANDLE__, __INTERRUPT__)  ((((__INTERRUPT__) >> 28U) == IRDA_CR1_REG_INDEX)? ((__HANDLE__)->Instance->CR1 &= ~((__INTERRUPT__) & IRDA_IT_MASK)): \
425
                                                           (((__INTERRUPT__) >> 28U) == IRDA_CR2_REG_INDEX)? ((__HANDLE__)->Instance->CR2 &= ~((__INTERRUPT__) & IRDA_IT_MASK)): \
483
                                                           (((__INTERRUPT__) >> 28U) == IRDA_CR2_REG_INDEX)? ((__HANDLE__)->Instance->CR2 &= ~((__INTERRUPT__) & IRDA_IT_MASK)): \
426
                                                           ((__HANDLE__)->Instance->CR3 &= ~ ((__INTERRUPT__) & IRDA_IT_MASK)))
484
                                                           ((__HANDLE__)->Instance->CR3 &= ~ ((__INTERRUPT__) & IRDA_IT_MASK)))
427
   
485
 
428
/** @brief  Check whether the specified IRDA interrupt has occurred or not.
486
/** @brief  Check whether the specified IRDA interrupt has occurred or not.
429
  * @param  __HANDLE__: specifies the IRDA Handle.
487
  * @param  __HANDLE__ specifies the IRDA Handle.
430
  *         IRDA Handle selects the USARTx or UARTy peripheral
488
  *         IRDA Handle selects the USARTx or UARTy peripheral
431
  *         (USART,UART availability and x,y values depending on device).
489
  *         (USART,UART availability and x,y values depending on device).
432
  * @param  __IT__: specifies the IRDA interrupt source to check.
490
  * @param  __IT__ specifies the IRDA interrupt source to check.
433
  *          This parameter can be one of the following values:
491
  *          This parameter can be one of the following values:
434
  *            @arg IRDA_IT_TXE: Transmit Data Register empty interrupt
492
  *            @arg IRDA_IT_TXE: Transmit Data Register empty interrupt
435
  *            @arg IRDA_IT_TC:  Transmission complete interrupt
493
  *            @arg IRDA_IT_TC:  Transmission complete interrupt
436
  *            @arg IRDA_IT_RXNE: Receive Data register not empty interrupt
494
  *            @arg IRDA_IT_RXNE: Receive Data register not empty interrupt
437
  *            @arg IRDA_IT_IDLE: Idle line detection interrupt
495
  *            @arg IRDA_IT_IDLE: Idle line detection interrupt
Line 441... Line 499...
441
  */
499
  */
442
#define __HAL_IRDA_GET_IT_SOURCE(__HANDLE__, __IT__) (((((__IT__) >> 28U) == IRDA_CR1_REG_INDEX)? (__HANDLE__)->Instance->CR1:(((((uint32_t)(__IT__)) >> 28U) == IRDA_CR2_REG_INDEX)? \
500
#define __HAL_IRDA_GET_IT_SOURCE(__HANDLE__, __IT__) (((((__IT__) >> 28U) == IRDA_CR1_REG_INDEX)? (__HANDLE__)->Instance->CR1:(((((uint32_t)(__IT__)) >> 28U) == IRDA_CR2_REG_INDEX)? \
443
                                                      (__HANDLE__)->Instance->CR2 : (__HANDLE__)->Instance->CR3)) & (((uint32_t)(__IT__)) & IRDA_IT_MASK))
501
                                                      (__HANDLE__)->Instance->CR2 : (__HANDLE__)->Instance->CR3)) & (((uint32_t)(__IT__)) & IRDA_IT_MASK))
444
 
502
 
445
/** @brief  Enable UART/USART associated to IRDA Handle
503
/** @brief  Enable UART/USART associated to IRDA Handle
446
  * @param  __HANDLE__: specifies the IRDA Handle.
504
  * @param  __HANDLE__ specifies the IRDA Handle.
447
  *         IRDA Handle selects the USARTx or UARTy peripheral
505
  *         IRDA Handle selects the USARTx or UARTy peripheral
448
  *         (USART,UART availability and x,y values depending on device).
506
  *         (USART,UART availability and x,y values depending on device).
-
 
507
  * @retval None
449
  */
508
  */
450
#define __HAL_IRDA_ENABLE(__HANDLE__)                   (SET_BIT((__HANDLE__)->Instance->CR1, USART_CR1_UE))
509
#define __HAL_IRDA_ENABLE(__HANDLE__)                   (SET_BIT((__HANDLE__)->Instance->CR1, USART_CR1_UE))
451
 
510
 
452
/** @brief  Disable UART/USART associated to IRDA Handle
511
/** @brief  Disable UART/USART associated to IRDA Handle
453
  * @param  __HANDLE__: specifies the IRDA Handle.
512
  * @param  __HANDLE__ specifies the IRDA Handle.
454
  *         IRDA Handle selects the USARTx or UARTy peripheral
513
  *         IRDA Handle selects the USARTx or UARTy peripheral
455
  *         (USART,UART availability and x,y values depending on device).
514
  *         (USART,UART availability and x,y values depending on device).
-
 
515
  * @retval None
456
  */
516
  */
457
#define __HAL_IRDA_DISABLE(__HANDLE__)                  (CLEAR_BIT((__HANDLE__)->Instance->CR1, USART_CR1_UE))
517
#define __HAL_IRDA_DISABLE(__HANDLE__)                  (CLEAR_BIT((__HANDLE__)->Instance->CR1, USART_CR1_UE))
458
 
518
 
459
/**
519
/**
460
  * @}
520
  * @}
Line 462... Line 522...
462
 
522
 
463
/* Exported functions --------------------------------------------------------*/
523
/* Exported functions --------------------------------------------------------*/
464
/** @addtogroup IRDA_Exported_Functions
524
/** @addtogroup IRDA_Exported_Functions
465
  * @{
525
  * @{
466
  */
526
  */
467
 
527
 
468
/** @addtogroup IRDA_Exported_Functions_Group1
528
/** @addtogroup IRDA_Exported_Functions_Group1
469
  * @{
529
  * @{
470
  */
530
  */
471
/* Initialization/de-initialization functions  **********************************/
531
/* Initialization/de-initialization functions  **********************************/
472
HAL_StatusTypeDef HAL_IRDA_Init(IRDA_HandleTypeDef *hirda);
532
HAL_StatusTypeDef HAL_IRDA_Init(IRDA_HandleTypeDef *hirda);
473
HAL_StatusTypeDef HAL_IRDA_DeInit(IRDA_HandleTypeDef *hirda);
533
HAL_StatusTypeDef HAL_IRDA_DeInit(IRDA_HandleTypeDef *hirda);
474
void HAL_IRDA_MspInit(IRDA_HandleTypeDef *hirda);
534
void HAL_IRDA_MspInit(IRDA_HandleTypeDef *hirda);
475
void HAL_IRDA_MspDeInit(IRDA_HandleTypeDef *hirda);
535
void HAL_IRDA_MspDeInit(IRDA_HandleTypeDef *hirda);
-
 
536
 
-
 
537
#if (USE_HAL_IRDA_REGISTER_CALLBACKS == 1)
-
 
538
/* Callbacks Register/UnRegister functions  ***********************************/
-
 
539
HAL_StatusTypeDef HAL_IRDA_RegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef CallbackID, pIRDA_CallbackTypeDef pCallback);
-
 
540
HAL_StatusTypeDef HAL_IRDA_UnRegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef CallbackID);
-
 
541
#endif /* USE_HAL_IRDA_REGISTER_CALLBACKS */
-
 
542
 
476
/**
543
/**
477
  * @}
544
  * @}
478
  */
545
  */
479
 
546
 
480
/** @addtogroup IRDA_Exported_Functions_Group2
547
/** @addtogroup IRDA_Exported_Functions_Group2
Line 517... Line 584...
517
/* Peripheral State functions  **************************************************/
584
/* Peripheral State functions  **************************************************/
518
HAL_IRDA_StateTypeDef HAL_IRDA_GetState(IRDA_HandleTypeDef *hirda);
585
HAL_IRDA_StateTypeDef HAL_IRDA_GetState(IRDA_HandleTypeDef *hirda);
519
uint32_t HAL_IRDA_GetError(IRDA_HandleTypeDef *hirda);
586
uint32_t HAL_IRDA_GetError(IRDA_HandleTypeDef *hirda);
520
/**
587
/**
521
  * @}
588
  * @}
522
  */
589
  */
523
 
590
 
524
/**
591
/**
525
  * @}
592
  * @}
526
  */
593
  */
527
 
594
 
Line 531... Line 598...
531
/** @defgroup IRDA_Private_Constants IRDA Private Constants
598
/** @defgroup IRDA_Private_Constants IRDA Private Constants
532
  * @{
599
  * @{
533
  */
600
  */
534
 
601
 
535
/** @brief IRDA interruptions flag mask
602
/** @brief IRDA interruptions flag mask
536
  *
603
  *
537
  */
604
  */
538
#define IRDA_IT_MASK                        0x0000FFFFU
605
#define IRDA_IT_MASK  ((uint32_t) USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE | USART_CR1_RXNEIE | \
-
 
606
                                  USART_CR1_IDLEIE | USART_CR2_LBDIE | USART_CR3_CTSIE | USART_CR3_EIE )
539
 
607
 
540
#define IRDA_CR1_REG_INDEX                  1U
608
#define IRDA_CR1_REG_INDEX         1U
541
#define IRDA_CR2_REG_INDEX                  2U
609
#define IRDA_CR2_REG_INDEX         2U
542
#define IRDA_CR3_REG_INDEX                  3U
610
#define IRDA_CR3_REG_INDEX         3U
543
/**
611
/**
544
  * @}
612
  * @}
545
  */
613
  */
546
 
614
 
547
/* Private macros --------------------------------------------------------*/
615
/* Private macros --------------------------------------------------------*/
548
/** @defgroup IRDA_Private_Macros   IRDA Private Macros
616
/** @defgroup IRDA_Private_Macros   IRDA Private Macros
549
  * @{
617
  * @{
550
  */
618
  */
551
#define IS_IRDA_WORD_LENGTH(LENGTH) (((LENGTH) == IRDA_WORDLENGTH_8B) || \
619
#define IS_IRDA_WORD_LENGTH(LENGTH)   (((LENGTH) == IRDA_WORDLENGTH_8B) || \
552
                                     ((LENGTH) == IRDA_WORDLENGTH_9B))
620
                                       ((LENGTH) == IRDA_WORDLENGTH_9B))
-
 
621
 
553
#define IS_IRDA_PARITY(PARITY) (((PARITY) == IRDA_PARITY_NONE) || \
622
#define IS_IRDA_PARITY(PARITY)        (((PARITY) == IRDA_PARITY_NONE) || \
554
                                ((PARITY) == IRDA_PARITY_EVEN) || \
623
                                       ((PARITY) == IRDA_PARITY_EVEN) || \
555
                                ((PARITY) == IRDA_PARITY_ODD))
624
                                       ((PARITY) == IRDA_PARITY_ODD))
-
 
625
 
556
#define IS_IRDA_MODE(MODE) ((((MODE) & 0x0000FFF3U) == 0x00U) && ((MODE) != 0x00000000U))
626
#define IS_IRDA_MODE(MODE)            ((((MODE) & 0x0000FFF3U) == 0x00U) && ((MODE) != 0x00000000U))
-
 
627
 
557
#define IS_IRDA_POWERMODE(MODE) (((MODE) == IRDA_POWERMODE_LOWPOWER) || \
628
#define IS_IRDA_POWERMODE(MODE)       (((MODE) == IRDA_POWERMODE_LOWPOWER) || \
558
                                 ((MODE) == IRDA_POWERMODE_NORMAL))
629
                                       ((MODE) == IRDA_POWERMODE_NORMAL))
-
 
630
 
559
#define IS_IRDA_BAUDRATE(BAUDRATE) ((BAUDRATE) < 115201U)
631
#define IS_IRDA_BAUDRATE(BAUDRATE)    ((BAUDRATE) < 115201U)
560
 
632
 
561
#define IRDA_DIV(_PCLK_, _BAUD_)            (((_PCLK_)*25U)/(4U*(_BAUD_)))
633
#define IRDA_DIV(_PCLK_, _BAUD_)      (((_PCLK_)*25U)/(4U*(_BAUD_)))
-
 
634
 
562
#define IRDA_DIVMANT(_PCLK_, _BAUD_)        (IRDA_DIV((_PCLK_), (_BAUD_))/100U)
635
#define IRDA_DIVMANT(_PCLK_, _BAUD_)  (IRDA_DIV((_PCLK_), (_BAUD_))/100U)
-
 
636
 
563
#define IRDA_DIVFRAQ(_PCLK_, _BAUD_)        (((IRDA_DIV((_PCLK_), (_BAUD_)) - (IRDA_DIVMANT((_PCLK_), (_BAUD_)) * 100U)) * 16U + 50U) / 100U)
637
#define IRDA_DIVFRAQ(_PCLK_, _BAUD_)  (((IRDA_DIV((_PCLK_), (_BAUD_)) - (IRDA_DIVMANT((_PCLK_), (_BAUD_)) * 100U)) * 16U + 50U) / 100U)
-
 
638
 
564
/* UART BRR = mantissa + overflow + fraction
639
/* UART BRR = mantissa + overflow + fraction
565
            = (UART DIVMANT << 4) + (UART DIVFRAQ & 0xF0) + (UART DIVFRAQ & 0x0FU) */
640
            = (UART DIVMANT << 4) + (UART DIVFRAQ & 0xF0) + (UART DIVFRAQ & 0x0FU) */
566
#define IRDA_BRR(_PCLK_, _BAUD_)            (((IRDA_DIVMANT((_PCLK_), (_BAUD_)) << 4U) + \
641
#define IRDA_BRR(_PCLK_, _BAUD_)      (((IRDA_DIVMANT((_PCLK_), (_BAUD_)) << 4U) + \
567
                                             (IRDA_DIVFRAQ((_PCLK_), (_BAUD_)) & 0xF0U)) + \
642
                                        (IRDA_DIVFRAQ((_PCLK_), (_BAUD_)) & 0xF0U)) + \
568
                                             (IRDA_DIVFRAQ((_PCLK_), (_BAUD_)) & 0x0FU))
643
                                        (IRDA_DIVFRAQ((_PCLK_), (_BAUD_)) & 0x0FU))
569
 
644
 
570
/**
645
/**
571
  * @}
646
  * @}
572
  */
647
  */
573
 
648
 
Line 580... Line 655...
580
  * @}
655
  * @}
581
  */
656
  */
582
 
657
 
583
/**
658
/**
584
  * @}
659
  * @}
585
  */
660
  */
586
 
661
 
587
/**
662
/**
588
  * @}
663
  * @}
589
  */
664
  */
590
 
665