Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TUKS-COURSE-TIMER by
stm32l4xx_hal_irda.h
00001 /** 00002 ****************************************************************************** 00003 * @file stm32l4xx_hal_irda.h 00004 * @author MCD Application Team 00005 * @version V1.5.1 00006 * @date 31-May-2016 00007 * @brief Header file of IRDA HAL module. 00008 ****************************************************************************** 00009 * @attention 00010 * 00011 * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> 00012 * 00013 * Redistribution and use in source and binary forms, with or without modification, 00014 * are permitted provided that the following conditions are met: 00015 * 1. Redistributions of source code must retain the above copyright notice, 00016 * this list of conditions and the following disclaimer. 00017 * 2. Redistributions in binary form must reproduce the above copyright notice, 00018 * this list of conditions and the following disclaimer in the documentation 00019 * and/or other materials provided with the distribution. 00020 * 3. Neither the name of STMicroelectronics nor the names of its contributors 00021 * may be used to endorse or promote products derived from this software 00022 * without specific prior written permission. 00023 * 00024 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00025 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00026 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00027 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 00028 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00029 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00030 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00031 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00032 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00033 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00034 * 00035 ****************************************************************************** 00036 */ 00037 00038 /* Define to prevent recursive inclusion -------------------------------------*/ 00039 #ifndef __STM32L4xx_HAL_IRDA_H 00040 #define __STM32L4xx_HAL_IRDA_H 00041 00042 #ifdef __cplusplus 00043 extern "C" { 00044 #endif 00045 00046 /* Includes ------------------------------------------------------------------*/ 00047 #include "stm32l4xx_hal_def.h" 00048 00049 /** @addtogroup STM32L4xx_HAL_Driver 00050 * @{ 00051 */ 00052 00053 /** @addtogroup IRDA 00054 * @{ 00055 */ 00056 00057 /* Exported types ------------------------------------------------------------*/ 00058 /** @defgroup IRDA_Exported_Types IRDA Exported Types 00059 * @{ 00060 */ 00061 00062 /** 00063 * @brief IRDA Init Structure definition 00064 */ 00065 typedef struct 00066 { 00067 uint32_t BaudRate; /*!< This member configures the IRDA communication baud rate. 00068 The baud rate register is computed using the following formula: 00069 Baud Rate Register = ((PCLKx) / ((hirda->Init.BaudRate))) */ 00070 00071 uint32_t WordLength; /*!< Specifies the number of data bits transmitted or received in a frame. 00072 This parameter can be a value of @ref IRDA_Word_Length */ 00073 00074 uint32_t Parity; /*!< Specifies the parity mode. 00075 This parameter can be a value of @ref IRDA_Parity 00076 @note When parity is enabled, the computed parity is inserted 00077 at the MSB position of the transmitted data (9th bit when 00078 the word length is set to 9 data bits; 8th bit when the 00079 word length is set to 8 data bits). */ 00080 00081 uint32_t Mode; /*!< Specifies whether the Receive or Transmit mode is enabled or disabled. 00082 This parameter can be a value of @ref IRDA_Transfer_Mode */ 00083 00084 uint8_t Prescaler; /*!< Specifies the Prescaler value for dividing the UART/USART source clock 00085 to achieve low-power frequency. 00086 @note Prescaler value 0 is forbidden */ 00087 00088 uint16_t PowerMode; /*!< Specifies the IRDA power mode. 00089 This parameter can be a value of @ref IRDA_Low_Power */ 00090 }IRDA_InitTypeDef; 00091 00092 /** 00093 * @brief HAL IRDA State structures definition 00094 * @note HAL IRDA State value is a combination of 2 different substates: gState and RxState. 00095 * - gState contains IRDA state information related to global Handle management 00096 * and also information related to Tx operations. 00097 * gState value coding follow below described bitmap : 00098 * b7-b6 Error information 00099 * 00 : No Error 00100 * 01 : (Not Used) 00101 * 10 : Timeout 00102 * 11 : Error 00103 * b5 IP initilisation status 00104 * 0 : Reset (IP not initialized) 00105 * 1 : Init done (IP not initialized. HAL IRDA Init function already called) 00106 * b4-b3 (not used) 00107 * xx : Should be set to 00 00108 * b2 Intrinsic process state 00109 * 0 : Ready 00110 * 1 : Busy (IP busy with some configuration or internal operations) 00111 * b1 (not used) 00112 * x : Should be set to 0 00113 * b0 Tx state 00114 * 0 : Ready (no Tx operation ongoing) 00115 * 1 : Busy (Tx operation ongoing) 00116 * - RxState contains information related to Rx operations. 00117 * RxState value coding follow below described bitmap : 00118 * b7-b6 (not used) 00119 * xx : Should be set to 00 00120 * b5 IP initilisation status 00121 * 0 : Reset (IP not initialized) 00122 * 1 : Init done (IP not initialized) 00123 * b4-b2 (not used) 00124 * xxx : Should be set to 000 00125 * b1 Rx state 00126 * 0 : Ready (no Rx operation ongoing) 00127 * 1 : Busy (Rx operation ongoing) 00128 * b0 (not used) 00129 * x : Should be set to 0. 00130 */ 00131 typedef enum 00132 { 00133 HAL_IRDA_STATE_RESET = 0x00U, /*!< Peripheral is not initialized 00134 Value is allowed for gState and RxState */ 00135 HAL_IRDA_STATE_READY = 0x20U, /*!< Peripheral Initialized and ready for use 00136 Value is allowed for gState and RxState */ 00137 HAL_IRDA_STATE_BUSY = 0x24U, /*!< an internal process is ongoing 00138 Value is allowed for gState only */ 00139 HAL_IRDA_STATE_BUSY_TX = 0x21U, /*!< Data Transmission process is ongoing 00140 Value is allowed for gState only */ 00141 HAL_IRDA_STATE_BUSY_RX = 0x22U, /*!< Data Reception process is ongoing 00142 Value is allowed for RxState only */ 00143 HAL_IRDA_STATE_BUSY_TX_RX = 0x23U, /*!< Data Transmission and Reception process is ongoing 00144 Not to be used for neither gState nor RxState. 00145 Value is result of combination (Or) between gState and RxState values */ 00146 HAL_IRDA_STATE_TIMEOUT = 0xA0U, /*!< Timeout state 00147 Value is allowed for gState only */ 00148 HAL_IRDA_STATE_ERROR = 0xE0U /*!< Error 00149 Value is allowed for gState only */ 00150 }HAL_IRDA_StateTypeDef; 00151 00152 /** 00153 * @brief HAL IRDA Error Code structure definition 00154 */ 00155 typedef enum 00156 { 00157 HAL_IRDA_ERROR_NONE = 0x00, /*!< No error */ 00158 HAL_IRDA_ERROR_PE = 0x01, /*!< Parity error */ 00159 HAL_IRDA_ERROR_NE = 0x02, /*!< Noise error */ 00160 HAL_IRDA_ERROR_FE = 0x04, /*!< frame error */ 00161 HAL_IRDA_ERROR_ORE = 0x08, /*!< Overrun error */ 00162 HAL_IRDA_ERROR_DMA = 0x10 /*!< DMA transfer error */ 00163 }HAL_IRDA_ErrorTypeDef; 00164 00165 /** 00166 * @brief IRDA clock sources definition 00167 */ 00168 typedef enum 00169 { 00170 IRDA_CLOCKSOURCE_PCLK1 = 0x00, /*!< PCLK1 clock source */ 00171 IRDA_CLOCKSOURCE_PCLK2 = 0x01, /*!< PCLK2 clock source */ 00172 IRDA_CLOCKSOURCE_HSI = 0x02, /*!< HSI clock source */ 00173 IRDA_CLOCKSOURCE_SYSCLK = 0x04, /*!< SYSCLK clock source */ 00174 IRDA_CLOCKSOURCE_LSE = 0x08, /*!< LSE clock source */ 00175 IRDA_CLOCKSOURCE_UNDEFINED = 0x10 /*!< Undefined clock source */ 00176 }IRDA_ClockSourceTypeDef; 00177 00178 /** 00179 * @brief IRDA handle Structure definition 00180 */ 00181 typedef struct 00182 { 00183 USART_TypeDef *Instance; /*!< USART registers base address */ 00184 00185 IRDA_InitTypeDef Init; /*!< IRDA communication parameters */ 00186 00187 uint8_t *pTxBuffPtr; /*!< Pointer to IRDA Tx transfer Buffer */ 00188 00189 uint16_t TxXferSize; /*!< IRDA Tx Transfer size */ 00190 00191 uint16_t TxXferCount; /* !<IRDA Tx Transfer Counter */ 00192 00193 uint8_t *pRxBuffPtr; /*!< Pointer to IRDA Rx transfer Buffer */ 00194 00195 uint16_t RxXferSize; /*!< IRDA Rx Transfer size */ 00196 00197 uint16_t RxXferCount; /*!< IRDA Rx Transfer Counter */ 00198 00199 uint16_t Mask; /*!< USART RX RDR register mask */ 00200 00201 DMA_HandleTypeDef *hdmatx; /*!< IRDA Tx DMA Handle parameters */ 00202 00203 DMA_HandleTypeDef *hdmarx; /*!< IRDA Rx DMA Handle parameters */ 00204 00205 HAL_LockTypeDef Lock; /*!< Locking object */ 00206 00207 __IO HAL_IRDA_StateTypeDef gState; /*!< IRDA state information related to global Handle management 00208 and also related to Tx operations. 00209 This parameter can be a value of @ref HAL_IRDA_StateTypeDef */ 00210 00211 __IO HAL_IRDA_StateTypeDef RxState; /*!< IRDA state information related to Rx operations. 00212 This parameter can be a value of @ref HAL_IRDA_StateTypeDef */ 00213 00214 uint32_t ErrorCode; /*!< IRDA Error code */ 00215 00216 }IRDA_HandleTypeDef; 00217 00218 /** 00219 * @brief IRDA Configuration enumeration values definition 00220 */ 00221 typedef enum 00222 { 00223 IRDA_BAUDRATE = 0x00, /*!< IRDA Baud rate */ 00224 IRDA_PARITY = 0x01, /*!< IRDA frame parity */ 00225 IRDA_WORDLENGTH = 0x02, /*!< IRDA frame length */ 00226 IRDA_MODE = 0x03, /*!< IRDA communication mode */ 00227 IRDA_PRESCALER = 0x04, /*!< IRDA prescaling */ 00228 IRDA_POWERMODE = 0x05 /*!< IRDA power mode */ 00229 }IRDA_ControlTypeDef; 00230 00231 /** 00232 * @} 00233 */ 00234 00235 /* Exported constants --------------------------------------------------------*/ 00236 /** @defgroup IRDA_Exported_Constants IRDA Exported Constants 00237 * @{ 00238 */ 00239 00240 /** @defgroup IRDA_Word_Length IRDA Word Length 00241 * @{ 00242 */ 00243 #define IRDA_WORDLENGTH_7B ((uint32_t)USART_CR1_M1) /*!< 7-bit long frame */ 00244 #define IRDA_WORDLENGTH_8B ((uint32_t)0x00000000) /*!< 8-bit long frame */ 00245 #define IRDA_WORDLENGTH_9B ((uint32_t)USART_CR1_M0) /*!< 9-bit long frame */ 00246 /** 00247 * @} 00248 */ 00249 00250 /** @defgroup IRDA_Parity IRDA Parity 00251 * @{ 00252 */ 00253 #define IRDA_PARITY_NONE ((uint32_t)0x00000000) /*!< No parity */ 00254 #define IRDA_PARITY_EVEN ((uint32_t)USART_CR1_PCE) /*!< Even parity */ 00255 #define IRDA_PARITY_ODD ((uint32_t)(USART_CR1_PCE | USART_CR1_PS)) /*!< Odd parity */ 00256 /** 00257 * @} 00258 */ 00259 00260 /** @defgroup IRDA_Transfer_Mode IRDA Transfer Mode 00261 * @{ 00262 */ 00263 #define IRDA_MODE_RX ((uint32_t)USART_CR1_RE) /*!< RX mode */ 00264 #define IRDA_MODE_TX ((uint32_t)USART_CR1_TE) /*!< TX mode */ 00265 #define IRDA_MODE_TX_RX ((uint32_t)(USART_CR1_TE |USART_CR1_RE)) /*!< RX and TX mode */ 00266 /** 00267 * @} 00268 */ 00269 00270 /** @defgroup IRDA_Low_Power IRDA Low Power 00271 * @{ 00272 */ 00273 #define IRDA_POWERMODE_NORMAL ((uint32_t)0x00000000) /*!< IRDA normal power mode */ 00274 #define IRDA_POWERMODE_LOWPOWER ((uint32_t)USART_CR3_IRLP) /*!< IRDA low power mode */ 00275 /** 00276 * @} 00277 */ 00278 00279 /** @defgroup IRDA_State IRDA State 00280 * @{ 00281 */ 00282 #define IRDA_STATE_DISABLE ((uint32_t)0x00000000) /*!< IRDA disabled */ 00283 #define IRDA_STATE_ENABLE ((uint32_t)USART_CR1_UE) /*!< IRDA enabled */ 00284 /** 00285 * @} 00286 */ 00287 00288 /** @defgroup IRDA_Mode IRDA Mode 00289 * @{ 00290 */ 00291 #define IRDA_MODE_DISABLE ((uint32_t)0x00000000) /*!< Associated UART disabled in IRDA mode */ 00292 #define IRDA_MODE_ENABLE ((uint32_t)USART_CR3_IREN) /*!< Associated UART enabled in IRDA mode */ 00293 /** 00294 * @} 00295 */ 00296 00297 /** @defgroup IRDA_One_Bit IRDA One Bit Sampling 00298 * @{ 00299 */ 00300 #define IRDA_ONE_BIT_SAMPLE_DISABLE ((uint32_t)0x00000000) /*!< One-bit sampling disabled */ 00301 #define IRDA_ONE_BIT_SAMPLE_ENABLE ((uint32_t)USART_CR3_ONEBIT) /*!< One-bit sampling enabled */ 00302 /** 00303 * @} 00304 */ 00305 00306 /** @defgroup IRDA_DMA_Tx IRDA DMA Tx 00307 * @{ 00308 */ 00309 #define IRDA_DMA_TX_DISABLE ((uint32_t)0x00000000) /*!< IRDA DMA TX disabled */ 00310 #define IRDA_DMA_TX_ENABLE ((uint32_t)USART_CR3_DMAT) /*!< IRDA DMA TX enabled */ 00311 /** 00312 * @} 00313 */ 00314 00315 /** @defgroup IRDA_DMA_Rx IRDA DMA Rx 00316 * @{ 00317 */ 00318 #define IRDA_DMA_RX_DISABLE ((uint32_t)0x00000000) /*!< IRDA DMA RX disabled */ 00319 #define IRDA_DMA_RX_ENABLE ((uint32_t)USART_CR3_DMAR) /*!< IRDA DMA RX enabled */ 00320 /** 00321 * @} 00322 */ 00323 00324 /** @defgroup IRDA_Request_Parameters IRDA Request Parameters 00325 * @{ 00326 */ 00327 #define IRDA_AUTOBAUD_REQUEST ((uint16_t)USART_RQR_ABRRQ) /*!< Auto-Baud Rate Request */ 00328 #define IRDA_RXDATA_FLUSH_REQUEST ((uint16_t)USART_RQR_RXFRQ) /*!< Receive Data flush Request */ 00329 #define IRDA_TXDATA_FLUSH_REQUEST ((uint16_t)USART_RQR_TXFRQ) /*!< Transmit data flush Request */ 00330 /** 00331 * @} 00332 */ 00333 00334 /** @defgroup IRDA_Flags IRDA Flags 00335 * Elements values convention: 0xXXXX 00336 * - 0xXXXX : Flag mask in the ISR register 00337 * @{ 00338 */ 00339 #define IRDA_FLAG_REACK ((uint32_t)0x00400000) /*!< IRDA Receive enable acknowledge flag */ 00340 #define IRDA_FLAG_TEACK ((uint32_t)0x00200000) /*!< IRDA Transmit enable acknowledge flag */ 00341 #define IRDA_FLAG_BUSY ((uint32_t)0x00010000) /*!< IRDA Busy flag */ 00342 #define IRDA_FLAG_ABRF ((uint32_t)0x00008000) /*!< IRDA Auto baud rate flag */ 00343 #define IRDA_FLAG_ABRE ((uint32_t)0x00004000) /*!< IRDA Auto baud rate error */ 00344 #define IRDA_FLAG_TXE ((uint32_t)0x00000080) /*!< IRDA Transmit data register empty */ 00345 #define IRDA_FLAG_TC ((uint32_t)0x00000040) /*!< IRDA Transmission complete */ 00346 #define IRDA_FLAG_RXNE ((uint32_t)0x00000020) /*!< IRDA Read data register not empty */ 00347 #define IRDA_FLAG_ORE ((uint32_t)0x00000008) /*!< IRDA Overrun error */ 00348 #define IRDA_FLAG_NE ((uint32_t)0x00000004) /*!< IRDA Noise error */ 00349 #define IRDA_FLAG_FE ((uint32_t)0x00000002) /*!< IRDA Noise error */ 00350 #define IRDA_FLAG_PE ((uint32_t)0x00000001) /*!< IRDA Parity error */ 00351 /** 00352 * @} 00353 */ 00354 00355 /** @defgroup IRDA_Interrupt_definition IRDA Interrupts Definition 00356 * Elements values convention: 0000ZZZZ0XXYYYYYb 00357 * - YYYYY : Interrupt source position in the XX register (5bits) 00358 * - XX : Interrupt source register (2bits) 00359 * - 01: CR1 register 00360 * - 10: CR2 register 00361 * - 11: CR3 register 00362 * - ZZZZ : Flag position in the ISR register(4bits) 00363 * @{ 00364 */ 00365 #define IRDA_IT_PE ((uint16_t)0x0028) /*!< IRDA Parity error interruption */ 00366 #define IRDA_IT_TXE ((uint16_t)0x0727) /*!< IRDA Transmit data register empty interruption */ 00367 #define IRDA_IT_TC ((uint16_t)0x0626) /*!< IRDA Transmission complete interruption */ 00368 #define IRDA_IT_RXNE ((uint16_t)0x0525) /*!< IRDA Read data register not empty interruption */ 00369 #define IRDA_IT_IDLE ((uint16_t)0x0424) /*!< IRDA Idle interruption */ 00370 00371 /* Elements values convention: 000000000XXYYYYYb 00372 - YYYYY : Interrupt source position in the XX register (5bits) 00373 - XX : Interrupt source register (2bits) 00374 - 01: CR1 register 00375 - 10: CR2 register 00376 - 11: CR3 register */ 00377 #define IRDA_IT_ERR ((uint16_t)0x0060) /*!< IRDA Error interruption */ 00378 00379 /* Elements values convention: 0000ZZZZ00000000b 00380 - ZZZZ : Flag position in the ISR register(4bits) */ 00381 #define IRDA_IT_ORE ((uint16_t)0x0300) /*!< IRDA Overrun error interruption */ 00382 #define IRDA_IT_NE ((uint16_t)0x0200) /*!< IRDA Noise error interruption */ 00383 #define IRDA_IT_FE ((uint16_t)0x0100) /*!< IRDA Frame error interruption */ 00384 /** 00385 * @} 00386 */ 00387 00388 /** @defgroup IRDA_IT_CLEAR_Flags IRDA Interruption Clear Flags 00389 * @{ 00390 */ 00391 #define IRDA_CLEAR_PEF USART_ICR_PECF /*!< Parity Error Clear Flag */ 00392 #define IRDA_CLEAR_FEF USART_ICR_FECF /*!< Framing Error Clear Flag */ 00393 #define IRDA_CLEAR_NEF USART_ICR_NCF /*!< Noise detected Clear Flag */ 00394 #define IRDA_CLEAR_OREF USART_ICR_ORECF /*!< OverRun Error Clear Flag */ 00395 #define IRDA_CLEAR_IDLEF USART_ICR_IDLECF /*!< IDLE line detected Clear Flag */ 00396 #define IRDA_CLEAR_TCF USART_ICR_TCCF /*!< Transmission Complete Clear Flag */ 00397 /** 00398 * @} 00399 */ 00400 00401 /** @defgroup IRDA_Interruption_Mask IRDA interruptions flags mask 00402 * @{ 00403 */ 00404 #define IRDA_IT_MASK ((uint16_t)0x001F) /*!< IRDA Interruptions flags mask */ 00405 /** 00406 * @} 00407 */ 00408 00409 /** 00410 * @} 00411 */ 00412 00413 00414 /* Exported macros -----------------------------------------------------------*/ 00415 /** @defgroup IRDA_Exported_Macros IRDA Exported Macros 00416 * @{ 00417 */ 00418 00419 /** @brief Reset IRDA handle state. 00420 * @param __HANDLE__: IRDA handle. 00421 * @retval None 00422 */ 00423 #define __HAL_IRDA_RESET_HANDLE_STATE(__HANDLE__) do{ \ 00424 (__HANDLE__)->gState = HAL_IRDA_STATE_RESET; \ 00425 (__HANDLE__)->RxState = HAL_IRDA_STATE_RESET; \ 00426 } while(0) 00427 00428 /** @brief Flush the IRDA DR register. 00429 * @param __HANDLE__: specifies the IRDA Handle. 00430 * @retval None 00431 */ 00432 #define __HAL_IRDA_FLUSH_DRREGISTER(__HANDLE__) \ 00433 do{ \ 00434 SET_BIT((__HANDLE__)->Instance->RQR, IRDA_RXDATA_FLUSH_REQUEST); \ 00435 SET_BIT((__HANDLE__)->Instance->RQR, IRDA_TXDATA_FLUSH_REQUEST); \ 00436 } while(0) 00437 00438 /** @brief Clear the specified IRDA pending flag. 00439 * @param __HANDLE__: specifies the IRDA Handle. 00440 * @param __FLAG__: specifies the flag to check. 00441 * This parameter can be any combination of the following values: 00442 * @arg @ref IRDA_CLEAR_PEF 00443 * @arg @ref IRDA_CLEAR_FEF 00444 * @arg @ref IRDA_CLEAR_NEF 00445 * @arg @ref IRDA_CLEAR_OREF 00446 * @arg @ref IRDA_CLEAR_TCF 00447 * @arg @ref IRDA_CLEAR_IDLEF 00448 * @retval None 00449 */ 00450 #define __HAL_IRDA_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__)) 00451 00452 /** @brief Clear the IRDA PE pending flag. 00453 * @param __HANDLE__: specifies the IRDA Handle. 00454 * @retval None 00455 */ 00456 #define __HAL_IRDA_CLEAR_PEFLAG(__HANDLE__) __HAL_IRDA_CLEAR_FLAG((__HANDLE__), IRDA_CLEAR_PEF) 00457 00458 00459 /** @brief Clear the IRDA FE pending flag. 00460 * @param __HANDLE__: specifies the IRDA Handle. 00461 * @retval None 00462 */ 00463 #define __HAL_IRDA_CLEAR_FEFLAG(__HANDLE__) __HAL_IRDA_CLEAR_FLAG((__HANDLE__), IRDA_CLEAR_FEF) 00464 00465 /** @brief Clear the IRDA NE pending flag. 00466 * @param __HANDLE__: specifies the IRDA Handle. 00467 * @retval None 00468 */ 00469 #define __HAL_IRDA_CLEAR_NEFLAG(__HANDLE__) __HAL_IRDA_CLEAR_FLAG((__HANDLE__), IRDA_CLEAR_NEF) 00470 00471 /** @brief Clear the IRDA ORE pending flag. 00472 * @param __HANDLE__: specifies the IRDA Handle. 00473 * @retval None 00474 */ 00475 #define __HAL_IRDA_CLEAR_OREFLAG(__HANDLE__) __HAL_IRDA_CLEAR_FLAG((__HANDLE__), IRDA_CLEAR_OREF) 00476 00477 /** @brief Clear the IRDA IDLE pending flag. 00478 * @param __HANDLE__: specifies the IRDA Handle. 00479 * @retval None 00480 */ 00481 #define __HAL_IRDA_CLEAR_IDLEFLAG(__HANDLE__) __HAL_IRDA_CLEAR_FLAG((__HANDLE__), IRDA_CLEAR_IDLEF) 00482 00483 /** @brief Check whether the specified IRDA flag is set or not. 00484 * @param __HANDLE__: specifies the IRDA Handle. 00485 * @param __FLAG__: specifies the flag to check. 00486 * This parameter can be one of the following values: 00487 * @arg @ref IRDA_FLAG_REACK Receive enable acknowledge flag 00488 * @arg @ref IRDA_FLAG_TEACK Transmit enable acknowledge flag 00489 * @arg @ref IRDA_FLAG_BUSY Busy flag 00490 * @arg @ref IRDA_FLAG_ABRF Auto Baud rate detection flag 00491 * @arg @ref IRDA_FLAG_ABRE Auto Baud rate detection error flag 00492 * @arg @ref IRDA_FLAG_TXE Transmit data register empty flag 00493 * @arg @ref IRDA_FLAG_TC Transmission Complete flag 00494 * @arg @ref IRDA_FLAG_RXNE Receive data register not empty flag 00495 * @arg @ref IRDA_FLAG_ORE OverRun Error flag 00496 * @arg @ref IRDA_FLAG_NE Noise Error flag 00497 * @arg @ref IRDA_FLAG_FE Framing Error flag 00498 * @arg @ref IRDA_FLAG_PE Parity Error flag 00499 * @retval The new state of __FLAG__ (TRUE or FALSE). 00500 */ 00501 #define __HAL_IRDA_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__)) 00502 00503 00504 /** @brief Enable the specified IRDA interrupt. 00505 * @param __HANDLE__: specifies the IRDA Handle. 00506 * @param __INTERRUPT__: specifies the IRDA interrupt source to enable. 00507 * This parameter can be one of the following values: 00508 * @arg @ref IRDA_IT_TXE Transmit Data Register empty interrupt 00509 * @arg @ref IRDA_IT_TC Transmission complete interrupt 00510 * @arg @ref IRDA_IT_RXNE Receive Data register not empty interrupt 00511 * @arg @ref IRDA_IT_IDLE Idle line detection interrupt 00512 * @arg @ref IRDA_IT_PE Parity Error interrupt 00513 * @arg @ref IRDA_IT_ERR Error interrupt(Frame error, noise error, overrun error) 00514 * @retval None 00515 */ 00516 #define __HAL_IRDA_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1)? ((__HANDLE__)->Instance->CR1 |= (1U << ((__INTERRUPT__) & IRDA_IT_MASK))): \ 00517 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2)? ((__HANDLE__)->Instance->CR2 |= (1U << ((__INTERRUPT__) & IRDA_IT_MASK))): \ 00518 ((__HANDLE__)->Instance->CR3 |= (1U << ((__INTERRUPT__) & IRDA_IT_MASK)))) 00519 00520 /** @brief Disable the specified IRDA interrupt. 00521 * @param __HANDLE__: specifies the IRDA Handle. 00522 * @param __INTERRUPT__: specifies the IRDA interrupt source to disable. 00523 * This parameter can be one of the following values: 00524 * @arg @ref IRDA_IT_TXE Transmit Data Register empty interrupt 00525 * @arg @ref IRDA_IT_TC Transmission complete interrupt 00526 * @arg @ref IRDA_IT_RXNE Receive Data register not empty interrupt 00527 * @arg @ref IRDA_IT_IDLE Idle line detection interrupt 00528 * @arg @ref IRDA_IT_PE Parity Error interrupt 00529 * @arg @ref IRDA_IT_ERR Error interrupt(Frame error, noise error, overrun error) 00530 * @retval None 00531 */ 00532 #define __HAL_IRDA_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1)? ((__HANDLE__)->Instance->CR1 &= ~ (1U << ((__INTERRUPT__) & IRDA_IT_MASK))): \ 00533 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2)? ((__HANDLE__)->Instance->CR2 &= ~ (1U << ((__INTERRUPT__) & IRDA_IT_MASK))): \ 00534 ((__HANDLE__)->Instance->CR3 &= ~ (1U << ((__INTERRUPT__) & IRDA_IT_MASK)))) 00535 00536 00537 /** @brief Check whether the specified IRDA interrupt has occurred or not. 00538 * @param __HANDLE__: specifies the IRDA Handle. 00539 * @param __IT__: specifies the IRDA interrupt source to check. 00540 * This parameter can be one of the following values: 00541 * @arg @ref IRDA_IT_TXE Transmit Data Register empty interrupt 00542 * @arg @ref IRDA_IT_TC Transmission complete interrupt 00543 * @arg @ref IRDA_IT_RXNE Receive Data register not empty interrupt 00544 * @arg @ref IRDA_IT_IDLE Idle line detection interrupt 00545 * @arg @ref IRDA_IT_ORE OverRun Error interrupt 00546 * @arg @ref IRDA_IT_NE Noise Error interrupt 00547 * @arg @ref IRDA_IT_FE Framing Error interrupt 00548 * @arg @ref IRDA_IT_PE Parity Error interrupt 00549 * @retval The new state of __IT__ (TRUE or FALSE). 00550 */ 00551 #define __HAL_IRDA_GET_IT(__HANDLE__, __IT__) ((__HANDLE__)->Instance->ISR & ((uint32_t)1U << ((__IT__)>> 0x08))) 00552 00553 /** @brief Check whether the specified IRDA interrupt source is enabled or not. 00554 * @param __HANDLE__: specifies the IRDA Handle. 00555 * @param __IT__: specifies the IRDA interrupt source to check. 00556 * This parameter can be one of the following values: 00557 * @arg @ref IRDA_IT_TXE Transmit Data Register empty interrupt 00558 * @arg @ref IRDA_IT_TC Transmission complete interrupt 00559 * @arg @ref IRDA_IT_RXNE Receive Data register not empty interrupt 00560 * @arg @ref IRDA_IT_IDLE Idle line detection interrupt 00561 * @arg @ref IRDA_IT_ERR Framing, overrun or noise error interrupt 00562 * @arg @ref IRDA_IT_PE Parity Error interrupt 00563 * @retval The new state of __IT__ (TRUE or FALSE). 00564 */ 00565 #define __HAL_IRDA_GET_IT_SOURCE(__HANDLE__, __IT__) ((((((uint8_t)(__IT__)) >> 5U) == 1)? (__HANDLE__)->Instance->CR1:(((((uint8_t)(__IT__)) >> 5U) == 2)? \ 00566 (__HANDLE__)->Instance->CR2 : (__HANDLE__)->Instance->CR3)) & ((uint32_t)1 << (((uint16_t)(__IT__)) & IRDA_IT_MASK))) 00567 00568 00569 /** @brief Clear the specified IRDA ISR flag, in setting the proper ICR register flag. 00570 * @param __HANDLE__: specifies the IRDA Handle. 00571 * @param __IT_CLEAR__: specifies the interrupt clear register flag that needs to be set 00572 * to clear the corresponding interrupt 00573 * This parameter can be one of the following values: 00574 * @arg @ref IRDA_CLEAR_PEF Parity Error Clear Flag 00575 * @arg @ref IRDA_CLEAR_FEF Framing Error Clear Flag 00576 * @arg @ref IRDA_CLEAR_NEF Noise detected Clear Flag 00577 * @arg @ref IRDA_CLEAR_OREF OverRun Error Clear Flag 00578 * @arg @ref IRDA_CLEAR_TCF Transmission Complete Clear Flag 00579 * @retval None 00580 */ 00581 #define __HAL_IRDA_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__)) 00582 00583 00584 /** @brief Set a specific IRDA request flag. 00585 * @param __HANDLE__: specifies the IRDA Handle. 00586 * @param __REQ__: specifies the request flag to set 00587 * This parameter can be one of the following values: 00588 * @arg @ref IRDA_AUTOBAUD_REQUEST Auto-Baud Rate Request 00589 * @arg @ref IRDA_RXDATA_FLUSH_REQUEST Receive Data flush Request 00590 * @arg @ref IRDA_TXDATA_FLUSH_REQUEST Transmit data flush Request 00591 * 00592 * @retval None 00593 */ 00594 #define __HAL_IRDA_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__)) 00595 00596 /** @brief Enable the IRDA one bit sample method. 00597 * @param __HANDLE__: specifies the IRDA Handle. 00598 * @retval None 00599 */ 00600 #define __HAL_IRDA_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT) 00601 00602 /** @brief Disable the IRDA one bit sample method. 00603 * @param __HANDLE__: specifies the IRDA Handle. 00604 * @retval None 00605 */ 00606 #define __HAL_IRDA_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= (uint32_t)~((uint32_t)USART_CR3_ONEBIT)) 00607 00608 /** @brief Enable UART/USART associated to IRDA Handle. 00609 * @param __HANDLE__: specifies the IRDA Handle. 00610 * @retval None 00611 */ 00612 #define __HAL_IRDA_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE) 00613 00614 /** @brief Disable UART/USART associated to IRDA Handle. 00615 * @param __HANDLE__: specifies the IRDA Handle. 00616 * @retval None 00617 */ 00618 #define __HAL_IRDA_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE) 00619 00620 /** 00621 * @} 00622 */ 00623 00624 /* Private macros --------------------------------------------------------*/ 00625 /** @defgroup IRDA_Private_Macros IRDA Private Macros 00626 * @{ 00627 */ 00628 00629 /** @brief Compute the mask to apply to retrieve the received data 00630 * according to the word length and to the parity bits activation. 00631 * @param __HANDLE__: specifies the IRDA Handle. 00632 * @retval None, the mask to apply to the associated UART RDR register is stored in (__HANDLE__)->Mask field. 00633 */ 00634 #define IRDA_MASK_COMPUTATION(__HANDLE__) \ 00635 do { \ 00636 if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_9B) \ 00637 { \ 00638 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \ 00639 { \ 00640 (__HANDLE__)->Mask = 0x01FF ; \ 00641 } \ 00642 else \ 00643 { \ 00644 (__HANDLE__)->Mask = 0x00FF ; \ 00645 } \ 00646 } \ 00647 else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_8B) \ 00648 { \ 00649 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \ 00650 { \ 00651 (__HANDLE__)->Mask = 0x00FF ; \ 00652 } \ 00653 else \ 00654 { \ 00655 (__HANDLE__)->Mask = 0x007F ; \ 00656 } \ 00657 } \ 00658 else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_7B) \ 00659 { \ 00660 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \ 00661 { \ 00662 (__HANDLE__)->Mask = 0x007F ; \ 00663 } \ 00664 else \ 00665 { \ 00666 (__HANDLE__)->Mask = 0x003F ; \ 00667 } \ 00668 } \ 00669 } while(0) 00670 00671 /** @brief Ensure that IRDA Baud rate is less or equal to maximum value. 00672 * @param __BAUDRATE__: specifies the IRDA Baudrate set by the user. 00673 * @retval True or False 00674 */ 00675 #define IS_IRDA_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 115201) 00676 00677 /** @brief Ensure that IRDA prescaler value is strictly larger than 0. 00678 * @param __PRESCALER__: specifies the IRDA prescaler value set by the user. 00679 * @retval True or False 00680 */ 00681 #define IS_IRDA_PRESCALER(__PRESCALER__) ((__PRESCALER__) > 0) 00682 00683 /** 00684 * @brief Ensure that IRDA frame length is valid. 00685 * @param __LENGTH__: IRDA frame length. 00686 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid) 00687 */ 00688 #define IS_IRDA_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == IRDA_WORDLENGTH_7B) || \ 00689 ((__LENGTH__) == IRDA_WORDLENGTH_8B) || \ 00690 ((__LENGTH__) == IRDA_WORDLENGTH_9B)) 00691 00692 /** 00693 * @brief Ensure that IRDA frame parity is valid. 00694 * @param __PARITY__: IRDA frame parity. 00695 * @retval SET (__PARITY__ is valid) or RESET (__PARITY__ is invalid) 00696 */ 00697 #define IS_IRDA_PARITY(__PARITY__) (((__PARITY__) == IRDA_PARITY_NONE) || \ 00698 ((__PARITY__) == IRDA_PARITY_EVEN) || \ 00699 ((__PARITY__) == IRDA_PARITY_ODD)) 00700 00701 /** 00702 * @brief Ensure that IRDA communication mode is valid. 00703 * @param __MODE__: IRDA communication mode. 00704 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid) 00705 */ 00706 #define IS_IRDA_TX_RX_MODE(__MODE__) ((((__MODE__) & (~((uint32_t)(IRDA_MODE_TX_RX)))) == (uint32_t)0x00) && ((__MODE__) != (uint32_t)0x00)) 00707 00708 /** 00709 * @brief Ensure that IRDA power mode is valid. 00710 * @param __MODE__: IRDA power mode. 00711 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid) 00712 */ 00713 #define IS_IRDA_POWERMODE(__MODE__) (((__MODE__) == IRDA_POWERMODE_LOWPOWER) || \ 00714 ((__MODE__) == IRDA_POWERMODE_NORMAL)) 00715 00716 /** 00717 * @brief Ensure that IRDA state is valid. 00718 * @param __STATE__: IRDA state mode. 00719 * @retval SET (__STATE__ is valid) or RESET (__STATE__ is invalid) 00720 */ 00721 #define IS_IRDA_STATE(__STATE__) (((__STATE__) == IRDA_STATE_DISABLE) || \ 00722 ((__STATE__) == IRDA_STATE_ENABLE)) 00723 00724 /** 00725 * @brief Ensure that IRDA associated UART/USART mode is valid. 00726 * @param __MODE__: IRDA associated UART/USART mode. 00727 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid) 00728 */ 00729 #define IS_IRDA_MODE(__MODE__) (((__MODE__) == IRDA_MODE_DISABLE) || \ 00730 ((__MODE__) == IRDA_MODE_ENABLE)) 00731 00732 /** 00733 * @brief Ensure that IRDA sampling rate is valid. 00734 * @param __ONEBIT__: IRDA sampling rate. 00735 * @retval SET (__ONEBIT__ is valid) or RESET (__ONEBIT__ is invalid) 00736 */ 00737 #define IS_IRDA_ONE_BIT_SAMPLE(__ONEBIT__) (((__ONEBIT__) == IRDA_ONE_BIT_SAMPLE_DISABLE) || \ 00738 ((__ONEBIT__) == IRDA_ONE_BIT_SAMPLE_ENABLE)) 00739 00740 /** 00741 * @brief Ensure that IRDA DMA TX mode is valid. 00742 * @param __DMATX__: IRDA DMA TX mode. 00743 * @retval SET (__DMATX__ is valid) or RESET (__DMATX__ is invalid) 00744 */ 00745 #define IS_IRDA_DMA_TX(__DMATX__) (((__DMATX__) == IRDA_DMA_TX_DISABLE) || \ 00746 ((__DMATX__) == IRDA_DMA_TX_ENABLE)) 00747 00748 /** 00749 * @brief Ensure that IRDA DMA RX mode is valid. 00750 * @param __DMARX__: IRDA DMA RX mode. 00751 * @retval SET (__DMARX__ is valid) or RESET (__DMARX__ is invalid) 00752 */ 00753 #define IS_IRDA_DMA_RX(__DMARX__) (((__DMARX__) == IRDA_DMA_RX_DISABLE) || \ 00754 ((__DMARX__) == IRDA_DMA_RX_ENABLE)) 00755 00756 /** 00757 * @brief Ensure that IRDA request is valid. 00758 * @param __PARAM__: IRDA request. 00759 * @retval SET (__PARAM__ is valid) or RESET (__PARAM__ is invalid) 00760 */ 00761 #define IS_IRDA_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == IRDA_AUTOBAUD_REQUEST) || \ 00762 ((__PARAM__) == IRDA_RXDATA_FLUSH_REQUEST) || \ 00763 ((__PARAM__) == IRDA_TXDATA_FLUSH_REQUEST)) 00764 /** 00765 * @} 00766 */ 00767 00768 /* Include IRDA HAL Extended module */ 00769 #include "stm32l4xx_hal_irda_ex.h" 00770 00771 /* Exported functions --------------------------------------------------------*/ 00772 /** @addtogroup IRDA_Exported_Functions IRDA Exported Functions 00773 * @{ 00774 */ 00775 00776 /** @addtogroup IRDA_Exported_Functions_Group1 Initialization and de-initialization functions 00777 * @{ 00778 */ 00779 00780 /* Initialization and de-initialization functions ****************************/ 00781 HAL_StatusTypeDef HAL_IRDA_Init(IRDA_HandleTypeDef *hirda); 00782 HAL_StatusTypeDef HAL_IRDA_DeInit(IRDA_HandleTypeDef *hirda); 00783 void HAL_IRDA_MspInit(IRDA_HandleTypeDef *hirda); 00784 void HAL_IRDA_MspDeInit(IRDA_HandleTypeDef *hirda); 00785 00786 /** 00787 * @} 00788 */ 00789 00790 /** @addtogroup IRDA_Exported_Functions_Group2 IO operation functions 00791 * @{ 00792 */ 00793 00794 /* IO operation functions *****************************************************/ 00795 HAL_StatusTypeDef HAL_IRDA_Transmit(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32_t Timeout); 00796 HAL_StatusTypeDef HAL_IRDA_Receive(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32_t Timeout); 00797 HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size); 00798 HAL_StatusTypeDef HAL_IRDA_Receive_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size); 00799 HAL_StatusTypeDef HAL_IRDA_Transmit_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size); 00800 HAL_StatusTypeDef HAL_IRDA_Receive_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size); 00801 HAL_StatusTypeDef HAL_IRDA_DMAPause(IRDA_HandleTypeDef *hirda); 00802 HAL_StatusTypeDef HAL_IRDA_DMAResume(IRDA_HandleTypeDef *hirda); 00803 HAL_StatusTypeDef HAL_IRDA_DMAStop(IRDA_HandleTypeDef *hirda); 00804 void HAL_IRDA_IRQHandler(IRDA_HandleTypeDef *hirda); 00805 void HAL_IRDA_TxCpltCallback(IRDA_HandleTypeDef *hirda); 00806 void HAL_IRDA_RxCpltCallback(IRDA_HandleTypeDef *hirda); 00807 void HAL_IRDA_TxHalfCpltCallback(IRDA_HandleTypeDef *hirda); 00808 void HAL_IRDA_RxHalfCpltCallback(IRDA_HandleTypeDef *hirda); 00809 void HAL_IRDA_ErrorCallback(IRDA_HandleTypeDef *hirda); 00810 00811 /** 00812 * @} 00813 */ 00814 00815 /* Peripheral Control functions ************************************************/ 00816 00817 /** @addtogroup IRDA_Exported_Functions_Group4 Peripheral State and Error functions 00818 * @{ 00819 */ 00820 00821 /* Peripheral State and Error functions ***************************************/ 00822 HAL_IRDA_StateTypeDef HAL_IRDA_GetState(IRDA_HandleTypeDef *hirda); 00823 uint32_t HAL_IRDA_GetError(IRDA_HandleTypeDef *hirda); 00824 00825 /** 00826 * @} 00827 */ 00828 00829 /** 00830 * @} 00831 */ 00832 00833 /** 00834 * @} 00835 */ 00836 00837 /** 00838 * @} 00839 */ 00840 00841 #ifdef __cplusplus 00842 } 00843 #endif 00844 00845 #endif /* __STM32L4xx_HAL_IRDA_H */ 00846 00847 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Generated on Tue Jul 12 2022 17:38:49 by
