Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:36

0001 /**
0002   ******************************************************************************
0003   * @file    stm32h7xx_hal_swpmi.h
0004   * @author  MCD Application Team
0005   * @brief   Header file of SWPMI HAL module.
0006   ******************************************************************************
0007   * @attention
0008   *
0009   * Copyright (c) 2017 STMicroelectronics.
0010   * All rights reserved.
0011   *
0012   * This software is licensed under terms that can be found in the LICENSE file
0013   * in the root directory of this software component.
0014   * If no LICENSE file comes with this software, it is provided AS-IS.
0015   *
0016   ******************************************************************************
0017   */
0018 
0019 /* Define to prevent recursive inclusion -------------------------------------*/
0020 #ifndef STM32H7xx_HAL_SWPMI_H
0021 #define STM32H7xx_HAL_SWPMI_H
0022 
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif
0026 
0027 /* Includes ------------------------------------------------------------------*/
0028 #include "stm32h7xx_hal_def.h"
0029 
0030 /** @addtogroup STM32H7xx_HAL_Driver
0031   * @{
0032   */
0033 
0034 
0035 /** @addtogroup SWPMI
0036   * @{
0037   */
0038 
0039 /* Exported types ------------------------------------------------------------*/
0040 /** @defgroup SWPMI_Exported_Types SWPMI Exported Types
0041   * @ingroup RTEMSBSPsARMSTM32H7
0042   * @{
0043   */
0044 
0045 /**
0046   * @brief SWPMI Init Structure definition
0047   */
0048 typedef struct
0049 {
0050   uint32_t VoltageClass;             /*!< Specifies the SWP Voltage Class.
0051                                           This parameter can be a value of @ref SWPMI_Voltage_Class */
0052 
0053   uint32_t BitRate;                  /*!< Specifies the SWPMI Bitrate.
0054                                           This parameter must be a number between 0 and 255U.
0055                                           The Bitrate is computed using the following formula:
0056                                           SWPMI_freq = SWPMI_clk / (((BitRate) + 1)  * 4)
0057                                           */
0058 
0059   uint32_t TxBufferingMode;          /*!< Specifies the transmission buffering mode.
0060                                           This parameter can be a value of @ref SWPMI_Tx_Buffering_Mode */
0061 
0062   uint32_t RxBufferingMode;          /*!< Specifies the reception buffering mode.
0063                                           This parameter can be a value of @ref SWPMI_Rx_Buffering_Mode */
0064 
0065 } SWPMI_InitTypeDef;
0066 
0067 
0068 /**
0069   * @brief HAL SWPMI State structures definition
0070   */
0071 typedef enum
0072 {
0073   HAL_SWPMI_STATE_RESET             = 0x00,    /*!< Peripheral Reset state                             */
0074   HAL_SWPMI_STATE_READY             = 0x01,    /*!< Peripheral Initialized and ready for use           */
0075   HAL_SWPMI_STATE_BUSY              = 0x02,    /*!< an internal process is ongoing                     */
0076   HAL_SWPMI_STATE_BUSY_TX           = 0x12,    /*!< Data Transmission process is ongoing               */
0077   HAL_SWPMI_STATE_BUSY_RX           = 0x22,    /*!< Data Reception process is ongoing                  */
0078   HAL_SWPMI_STATE_BUSY_TX_RX        = 0x32,    /*!< Data Transmission and Reception process is ongoing */
0079   HAL_SWPMI_STATE_TIMEOUT           = 0x03,    /*!< Timeout state                                      */
0080   HAL_SWPMI_STATE_ERROR             = 0x04     /*!< Error                                              */
0081 } HAL_SWPMI_StateTypeDef;
0082 
0083 /**
0084   * @brief  SWPMI handle Structure definition
0085   */
0086 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
0087 typedef struct __SWPMI_HandleTypeDef
0088 #else
0089 typedef struct
0090 #endif /* USE_HAL_SWPMI_REGISTER_CALLBACKS */
0091 {
0092   SWPMI_TypeDef                  *Instance;     /*!< SWPMI registers base address         */
0093 
0094   SWPMI_InitTypeDef              Init;          /*!< SWPMI communication parameters       */
0095 
0096   uint32_t                       *pTxBuffPtr;   /*!< Pointer to SWPMI Tx transfer Buffer  */
0097 
0098   uint32_t                       TxXferSize;    /*!< SWPMI Tx Transfer size               */
0099 
0100   uint32_t                       TxXferCount;   /*!< SWPMI Tx Transfer Counter            */
0101 
0102   uint32_t                       *pRxBuffPtr;   /*!< Pointer to SWPMI Rx transfer Buffer  */
0103 
0104   uint32_t                       RxXferSize;    /*!< SWPMI Rx Transfer size               */
0105 
0106   uint32_t                       RxXferCount;   /*!< SWPMI Rx Transfer Counter            */
0107 
0108   DMA_HandleTypeDef              *hdmatx;       /*!< SWPMI Tx DMA Handle parameters       */
0109 
0110   DMA_HandleTypeDef              *hdmarx;       /*!< SWPMI Rx DMA Handle parameters       */
0111 
0112   HAL_LockTypeDef                Lock;          /*!< SWPMI object                         */
0113 
0114   __IO HAL_SWPMI_StateTypeDef    State;         /*!< SWPMI communication state            */
0115 
0116   __IO uint32_t                  ErrorCode;     /*!< SWPMI Error code                     */
0117 
0118 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
0119   void (*RxCpltCallback)(struct __SWPMI_HandleTypeDef *hswpmi);      /*!< SWPMI receive complete callback */
0120   void (*RxHalfCpltCallback)(struct __SWPMI_HandleTypeDef *hswpmi);  /*!< SWPMI receive half complete callback */
0121   void (*TxCpltCallback)(struct __SWPMI_HandleTypeDef *hswpmi);      /*!< SWPMI transmit complete callback */
0122   void (*TxHalfCpltCallback)(struct __SWPMI_HandleTypeDef *hswpmi);  /*!< SWPMI transmit half complete callback */
0123   void (*ErrorCallback)(struct __SWPMI_HandleTypeDef *hswpmi);       /*!< SWPMI error callback */
0124   void (*MspInitCallback)(struct __SWPMI_HandleTypeDef *hswpmi);     /*!< SWPMI MSP init callback */
0125   void (*MspDeInitCallback)(struct __SWPMI_HandleTypeDef *hswpmi);   /*!< SWPMI MSP de-init callback */
0126 #endif
0127 
0128 } SWPMI_HandleTypeDef;
0129 
0130 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
0131 /**
0132   * @brief  SWPMI callback ID enumeration definition
0133   */
0134 typedef enum
0135 {
0136   HAL_SWPMI_RX_COMPLETE_CB_ID     = 0x00U, /*!< SWPMI receive complete callback ID */
0137   HAL_SWPMI_RX_HALFCOMPLETE_CB_ID = 0x01U, /*!< SWPMI receive half complete callback ID */
0138   HAL_SWPMI_TX_COMPLETE_CB_ID     = 0x02U, /*!< SWPMI transmit complete callback ID */
0139   HAL_SWPMI_TX_HALFCOMPLETE_CB_ID = 0x03U, /*!< SWPMI transmit half complete callback ID */
0140   HAL_SWPMI_ERROR_CB_ID           = 0x04U, /*!< SWPMI error callback ID */
0141   HAL_SWPMI_MSPINIT_CB_ID         = 0x05U, /*!< SWPMI MSP init callback ID */
0142   HAL_SWPMI_MSPDEINIT_CB_ID       = 0x06U  /*!< SWPMI MSP de-init callback ID */
0143 } HAL_SWPMI_CallbackIDTypeDef;
0144 
0145 /**
0146   * @brief  SWPMI callback pointer definition
0147   */
0148 typedef void (*pSWPMI_CallbackTypeDef)(SWPMI_HandleTypeDef *hswpmi);
0149 #endif
0150 
0151 /**
0152   * @}
0153   */
0154 
0155 /* Exported constants --------------------------------------------------------*/
0156 /** @defgroup SWPMI_Exported_Constants SWPMI Exported Constants
0157   * @ingroup RTEMSBSPsARMSTM32H7
0158   * @{
0159   */
0160 
0161 /**
0162   * @defgroup SWPMI_Error_Code SWPMI Error Code Bitmap
0163   * @ingroup RTEMSBSPsARMSTM32H7
0164   * @{
0165   */
0166 #define HAL_SWPMI_ERROR_NONE                  ((uint32_t)0x00000000) /*!< No error              */
0167 #define HAL_SWPMI_ERROR_CRC                   ((uint32_t)0x00000004) /*!< frame error           */
0168 #define HAL_SWPMI_ERROR_OVR                   ((uint32_t)0x00000008) /*!< Overrun error         */
0169 #define HAL_SWPMI_ERROR_UDR                   ((uint32_t)0x0000000C) /*!< Underrun error        */
0170 #define HAL_SWPMI_ERROR_DMA                   ((uint32_t)0x00000010) /*!< DMA transfer error    */
0171 #define HAL_SWPMI_ERROR_TIMEOUT               ((uint32_t)0x00000020) /*!< Transfer timeout      */
0172 #define HAL_SWPMI_ERROR_TXBEF_TIMEOUT         ((uint32_t)0x00000040) /*!< End Tx buffer timeout */
0173 #define HAL_SWPMI_ERROR_TRANSCEIVER_NOT_READY ((uint32_t)0x00000080) /*!< Transceiver not ready */
0174 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
0175 #define HAL_SWPMI_ERROR_INVALID_CALLBACK      ((uint32_t)0x00000100) /*!< Invalid callback error */
0176 #endif
0177 /**
0178   * @}
0179   */
0180 
0181 /** @defgroup SWPMI_Voltage_Class SWPMI Voltage Class
0182   * @ingroup RTEMSBSPsARMSTM32H7
0183   * @{
0184   */
0185 #define SWPMI_VOLTAGE_CLASS_C                ((uint32_t)0x00000000)
0186 #define SWPMI_VOLTAGE_CLASS_B                SWPMI_OR_CLASS
0187 /**
0188   * @}
0189   */
0190 
0191 /** @defgroup SWPMI_Tx_Buffering_Mode SWPMI Tx Buffering Mode
0192   * @ingroup RTEMSBSPsARMSTM32H7
0193   * @{
0194   */
0195 #define SWPMI_TX_NO_SOFTWAREBUFFER           ((uint32_t)0x00000000)
0196 #define SWPMI_TX_SINGLE_SOFTWAREBUFFER       ((uint32_t)0x00000000)
0197 #define SWPMI_TX_MULTI_SOFTWAREBUFFER        SWPMI_CR_TXMODE
0198 /**
0199   * @}
0200   */
0201 
0202 /** @defgroup SWPMI_Rx_Buffering_Mode SWPMI Rx Buffering Mode
0203   * @ingroup RTEMSBSPsARMSTM32H7
0204   * @{
0205   */
0206 #define SWPMI_RX_NO_SOFTWAREBUFFER           ((uint32_t)0x00000000)
0207 #define SWPMI_RX_SINGLE_SOFTWAREBUFFER       ((uint32_t)0x00000000)
0208 #define SWPMI_RX_MULTI_SOFTWAREBUFFER        SWPMI_CR_RXMODE
0209 /**
0210   * @}
0211   */
0212 
0213 /** @defgroup SWPMI_Flags SWPMI Status Flags
0214   * @ingroup RTEMSBSPsARMSTM32H7
0215   *        Elements values convention: 0xXXXXXXXX
0216   *           - 0xXXXXXXXX  : Flag mask in the ISR register
0217   * @{
0218   */
0219 #define SWPMI_FLAG_RXBFF                 SWPMI_ISR_RXBFF
0220 #define SWPMI_FLAG_TXBEF                 SWPMI_ISR_TXBEF
0221 #define SWPMI_FLAG_RXBERF                SWPMI_ISR_RXBERF
0222 #define SWPMI_FLAG_RXOVRF                SWPMI_ISR_RXOVRF
0223 #define SWPMI_FLAG_TXUNRF                SWPMI_ISR_TXUNRF
0224 #define SWPMI_FLAG_RXNE                  SWPMI_ISR_RXNE
0225 #define SWPMI_FLAG_TXE                   SWPMI_ISR_TXE
0226 #define SWPMI_FLAG_TCF                   SWPMI_ISR_TCF
0227 #define SWPMI_FLAG_SRF                   SWPMI_ISR_SRF
0228 #define SWPMI_FLAG_SUSP                  SWPMI_ISR_SUSP
0229 #define SWPMI_FLAG_DEACTF                SWPMI_ISR_DEACTF
0230 #define SWPMI_FLAG_RDYF                  SWPMI_ISR_RDYF
0231 /**
0232   * @}
0233   */
0234 
0235 /** @defgroup SWPMI_Interrupt_definition SWPMI Interrupts Definition
0236   * @ingroup RTEMSBSPsARMSTM32H7
0237   *        Elements values convention: 0xXXXX
0238   *           - 0xXXXX  : Flag mask in the IER register
0239   * @{
0240   */
0241 #define SWPMI_IT_RDYIE                   SWPMI_IER_RDYIE
0242 #define SWPMI_IT_SRIE                    SWPMI_IER_SRIE
0243 #define SWPMI_IT_TCIE                    SWPMI_IER_TCIE
0244 #define SWPMI_IT_TIE                     SWPMI_IER_TIE
0245 #define SWPMI_IT_RIE                     SWPMI_IER_RIE
0246 #define SWPMI_IT_TXUNRIE                 SWPMI_IER_TXUNRIE
0247 #define SWPMI_IT_RXOVRIE                 SWPMI_IER_RXOVRIE
0248 #define SWPMI_IT_RXBERIE                 SWPMI_IER_RXBERIE
0249 #define SWPMI_IT_TXBEIE                  SWPMI_IER_TXBEIE
0250 #define SWPMI_IT_RXBFIE                  SWPMI_IER_RXBFIE
0251 /**
0252   * @}
0253   */
0254 
0255 /**
0256   * @}
0257   */
0258 
0259 /* Exported macros -----------------------------------------------------------*/
0260 /** @defgroup SWPMI_Exported_Macros SWPMI Exported Macros
0261   * @ingroup RTEMSBSPsARMSTM32H7
0262   * @{
0263   */
0264 
0265 /** @brief Reset SWPMI handle state.
0266   * @param  __HANDLE__ specifies the SWPMI Handle.
0267   * @retval None
0268   */
0269 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
0270 #define __HAL_SWPMI_RESET_HANDLE_STATE(__HANDLE__) do{                                            \
0271                                                      (__HANDLE__)->State = HAL_SWPMI_STATE_RESET; \
0272                                                      (__HANDLE__)->MspInitCallback = NULL;        \
0273                                                      (__HANDLE__)->MspDeInitCallback = NULL;      \
0274                                                    } while(0)
0275 #else
0276 #define __HAL_SWPMI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SWPMI_STATE_RESET)
0277 #endif
0278 
0279 /**
0280   * @brief  Enable the SWPMI peripheral.
0281   * @param  __HANDLE__ SWPMI handle
0282   * @retval None
0283   */
0284 #define __HAL_SWPMI_ENABLE(__HANDLE__)   SET_BIT((__HANDLE__)->Instance->CR, SWPMI_CR_SWPACT)
0285 
0286 /**
0287   * @brief  Disable the SWPMI peripheral.
0288   * @param  __HANDLE__ SWPMI handle
0289   * @retval None
0290   */
0291 #define __HAL_SWPMI_DISABLE(__HANDLE__)  CLEAR_BIT((__HANDLE__)->Instance->CR, SWPMI_CR_SWPACT)
0292 
0293 /**
0294   * @brief  Enable the SWPMI transceiver.
0295   * @param  __HANDLE__ SWPMI handle
0296   * @retval None
0297   */
0298 #define __HAL_SWPMI_TRANSCEIVER_ENABLE(__HANDLE__)   SET_BIT((__HANDLE__)->Instance->CR, SWPMI_CR_SWPEN)
0299 
0300 /**
0301   * @brief  Disable the SWPMI transceiver.
0302   * @param  __HANDLE__ SWPMI handle
0303   * @retval None
0304   */
0305 #define __HAL_SWPMI_TRANSCEIVER_DISABLE(__HANDLE__)  CLEAR_BIT((__HANDLE__)->Instance->CR, SWPMI_CR_SWPEN)
0306 
0307 /** @brief  Check whether the specified SWPMI flag is set or not.
0308   * @param  __HANDLE__ specifies the SWPMI Handle.
0309   * @param  __FLAG__ specifies the flag to check.
0310   *        This parameter can be one of the following values:
0311   *            @arg SWPMI_FLAG_RXBFF  Receive buffer full flag.
0312   *            @arg SWPMI_FLAG_TXBEF  Transmit buffer empty flag.
0313   *            @arg SWPMI_FLAG_RXBERF  Receive CRC error flag.
0314   *            @arg SWPMI_FLAG_RXOVRF  Receive overrun error flag.
0315   *            @arg SWPMI_FLAG_TXUNRF  Transmit underrun error flag.
0316   *            @arg SWPMI_FLAG_RXNE  Receive data register not empty.
0317   *            @arg SWPMI_FLAG_TXE  Transmit data register empty.
0318   *            @arg SWPMI_FLAG_TCF  Transfer complete flag.
0319   *            @arg SWPMI_FLAG_SRF  Slave resume flag.
0320   *            @arg SWPMI_FLAG_SUSP  SUSPEND flag.
0321   *            @arg SWPMI_FLAG_DEACTF  DEACTIVATED flag.
0322   *            @arg SWPMI_FLAG_RDYF  Transceiver ready flag.
0323   * @retval The new state of __FLAG__ (TRUE or FALSE).
0324   */
0325 #define __HAL_SWPMI_GET_FLAG(__HANDLE__, __FLAG__) (READ_BIT((__HANDLE__)->Instance->ISR, (__FLAG__)) == (__FLAG__))
0326 
0327 /** @brief  Clear the specified SWPMI ISR flag.
0328   * @param  __HANDLE__ specifies the SWPMI Handle.
0329   * @param  __FLAG__ specifies the flag to clear.
0330   *        This parameter can be one of the following values:
0331   *            @arg SWPMI_FLAG_RXBFF  Receive buffer full flag.
0332   *            @arg SWPMI_FLAG_TXBEF  Transmit buffer empty flag.
0333   *            @arg SWPMI_FLAG_RXBERF  Receive CRC error flag.
0334   *            @arg SWPMI_FLAG_RXOVRF  Receive overrun error flag.
0335   *            @arg SWPMI_FLAG_TXUNRF  Transmit underrun error flag.
0336   *            @arg SWPMI_FLAG_TCF  Transfer complete flag.
0337   *            @arg SWPMI_FLAG_SRF  Slave resume flag.
0338   *            @arg SWPMI_FLAG_RDYF  Transceiver ready flag.
0339   * @retval None
0340   */
0341 #define __HAL_SWPMI_CLEAR_FLAG(__HANDLE__, __FLAG__) WRITE_REG((__HANDLE__)->Instance->ICR, (__FLAG__))
0342 
0343 /** @brief  Enable the specified SWPMI interrupt.
0344   * @param  __HANDLE__ specifies the SWPMI Handle.
0345   * @param  __INTERRUPT__ specifies the SWPMI interrupt source to enable.
0346   *          This parameter can be one of the following values:
0347   *            @arg SWPMI_IT_RDYIE  Transceiver ready interrupt.
0348   *            @arg SWPMI_IT_SRIE  Slave resume interrupt.
0349   *            @arg SWPMI_IT_TCIE  Transmit complete interrupt.
0350   *            @arg SWPMI_IT_TIE   Transmit interrupt.
0351   *            @arg SWPMI_IT_RIE   Receive interrupt.
0352   *            @arg SWPMI_IT_TXUNRIE  Transmit underrun error interrupt.
0353   *            @arg SWPMI_IT_RXOVRIE  Receive overrun error interrupt.
0354   *            @arg SWPMI_IT_RXBEIE  Receive CRC error interrupt.
0355   *            @arg SWPMI_IT_TXBEIE   Transmit buffer empty interrupt.
0356   *            @arg SWPMI_IT_RXBFIE   Receive buffer full interrupt.
0357   * @retval None
0358   */
0359 #define __HAL_SWPMI_ENABLE_IT(__HANDLE__, __INTERRUPT__)   SET_BIT((__HANDLE__)->Instance->IER, (__INTERRUPT__))
0360 
0361 /** @brief  Disable the specified SWPMI interrupt.
0362   * @param  __HANDLE__ specifies the SWPMI Handle.
0363   * @param  __INTERRUPT__ specifies the SWPMI interrupt source to disable.
0364   *          This parameter can be one of the following values:
0365   *            @arg SWPMI_IT_RDYIE  Transceiver ready interrupt.
0366   *            @arg SWPMI_IT_SRIE  Slave resume interrupt.
0367   *            @arg SWPMI_IT_TCIE  Transmit complete interrupt.
0368   *            @arg SWPMI_IT_TIE   Transmit interrupt.
0369   *            @arg SWPMI_IT_RIE   Receive interrupt.
0370   *            @arg SWPMI_IT_TXUNRIE  Transmit underrun error interrupt.
0371   *            @arg SWPMI_IT_RXOVRIE  Receive overrun error interrupt.
0372   *            @arg SWPMI_IT_RXBEIE  Receive CRC error interrupt.
0373   *            @arg SWPMI_IT_TXBEIE   Transmit buffer empty interrupt.
0374   *            @arg SWPMI_IT_RXBFIE   Receive buffer full interrupt.
0375   * @retval None
0376   */
0377 #define __HAL_SWPMI_DISABLE_IT(__HANDLE__, __INTERRUPT__)  CLEAR_BIT((__HANDLE__)->Instance->IER, (__INTERRUPT__))
0378 
0379 /** @brief  Check whether the specified SWPMI interrupt has occurred or not.
0380   * @param  __HANDLE__ specifies the SWPMI Handle.
0381   * @param  __IT__ specifies the SWPMI interrupt to check.
0382   *          This parameter can be one of the following values:
0383   *            @arg SWPMI_IT_RDYIE  Transceiver ready interrupt.
0384   *            @arg SWPMI_IT_SRIE  Slave resume interrupt.
0385   *            @arg SWPMI_IT_TCIE  Transmit complete interrupt.
0386   *            @arg SWPMI_IT_TIE   Transmit interrupt.
0387   *            @arg SWPMI_IT_RIE   Receive interrupt.
0388   *            @arg SWPMI_IT_TXUNRIE  Transmit underrun error interrupt.
0389   *            @arg SWPMI_IT_RXOVRIE  Receive overrun error interrupt.
0390   *            @arg SWPMI_IT_RXBERIE  Receive CRC error interrupt.
0391   *            @arg SWPMI_IT_TXBEIE   Transmit buffer empty interrupt.
0392   *            @arg SWPMI_IT_RXBFIE   Receive buffer full interrupt.
0393   * @retval The new state of __IT__ (TRUE or FALSE).
0394   */
0395 #define __HAL_SWPMI_GET_IT(__HANDLE__, __IT__)  (READ_BIT((__HANDLE__)->Instance->ISR,(__IT__)) == (__IT__))
0396 
0397 /** @brief  Check whether the specified SWPMI interrupt source is enabled or not.
0398   * @param  __HANDLE__ specifies the SWPMI Handle.
0399   * @param  __IT__ specifies the SWPMI interrupt source to check.
0400   *          This parameter can be one of the following values:
0401   *            @arg SWPMI_IT_RDYIE  Transceiver ready interrupt.
0402   *            @arg SWPMI_IT_SRIE  Slave resume interrupt.
0403   *            @arg SWPMI_IT_TCIE  Transmit complete interrupt.
0404   *            @arg SWPMI_IT_TIE   Transmit interrupt.
0405   *            @arg SWPMI_IT_RIE   Receive interrupt.
0406   *            @arg SWPMI_IT_TXUNRIE  Transmit underrun error interrupt.
0407   *            @arg SWPMI_IT_RXOVRIE  Receive overrun error interrupt.
0408   *            @arg SWPMI_IT_RXBERIE  Receive CRC error interrupt.
0409   *            @arg SWPMI_IT_TXBEIE   Transmit buffer empty interrupt.
0410   *            @arg SWPMI_IT_RXBFIE   Receive buffer full interrupt.
0411   * @retval The new state of __IT__ (TRUE or FALSE).
0412   */
0413 #define __HAL_SWPMI_GET_IT_SOURCE(__HANDLE__, __IT__) ((READ_BIT((__HANDLE__)->Instance->IER, (__IT__)) == (__IT__)) ? SET : RESET)
0414 
0415 /**
0416   * @}
0417   */
0418 
0419 /* Exported functions --------------------------------------------------------*/
0420 /** @defgroup SWPMI_Exported_Functions SWPMI Exported Functions
0421   * @ingroup RTEMSBSPsARMSTM32H7
0422   * @{
0423   */
0424 /* Initialization/de-initialization functions  ********************************/
0425 HAL_StatusTypeDef HAL_SWPMI_Init(SWPMI_HandleTypeDef *hswpmi);
0426 HAL_StatusTypeDef HAL_SWPMI_DeInit(SWPMI_HandleTypeDef *hswpmi);
0427 void              HAL_SWPMI_MspInit(SWPMI_HandleTypeDef *hswpmi);
0428 void              HAL_SWPMI_MspDeInit(SWPMI_HandleTypeDef *hswpmi);
0429 
0430 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
0431 /* SWPMI callbacks register/unregister functions ********************************/
0432 HAL_StatusTypeDef HAL_SWPMI_RegisterCallback(SWPMI_HandleTypeDef        *hswpmi,
0433                                              HAL_SWPMI_CallbackIDTypeDef CallbackID,
0434                                              pSWPMI_CallbackTypeDef      pCallback);
0435 HAL_StatusTypeDef HAL_SWPMI_UnRegisterCallback(SWPMI_HandleTypeDef        *hswpmi,
0436                                                HAL_SWPMI_CallbackIDTypeDef CallbackID);
0437 #endif
0438 
0439 /* IO operation functions *****************************************************/
0440 HAL_StatusTypeDef HAL_SWPMI_Transmit(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout);
0441 HAL_StatusTypeDef HAL_SWPMI_Receive(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout);
0442 HAL_StatusTypeDef HAL_SWPMI_Transmit_IT(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
0443 HAL_StatusTypeDef HAL_SWPMI_Receive_IT(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
0444 HAL_StatusTypeDef HAL_SWPMI_Transmit_DMA(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
0445 HAL_StatusTypeDef HAL_SWPMI_Receive_DMA(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
0446 HAL_StatusTypeDef HAL_SWPMI_DMAStop(SWPMI_HandleTypeDef *hswpmi);
0447 HAL_StatusTypeDef HAL_SWPMI_EnableLoopback(SWPMI_HandleTypeDef *hswpmi);
0448 HAL_StatusTypeDef HAL_SWPMI_DisableLoopback(SWPMI_HandleTypeDef *hswpmi);
0449 void              HAL_SWPMI_IRQHandler(SWPMI_HandleTypeDef *hswpmi);
0450 void              HAL_SWPMI_TxCpltCallback(SWPMI_HandleTypeDef *hswpmi);
0451 void              HAL_SWPMI_TxHalfCpltCallback(SWPMI_HandleTypeDef *hswpmi);
0452 void              HAL_SWPMI_RxCpltCallback(SWPMI_HandleTypeDef *hswpmi);
0453 void              HAL_SWPMI_RxHalfCpltCallback(SWPMI_HandleTypeDef *hswpmi);
0454 void              HAL_SWPMI_ErrorCallback(SWPMI_HandleTypeDef *hswpmi);
0455 
0456 /* Peripheral Control and State functions  ************************************/
0457 HAL_SWPMI_StateTypeDef HAL_SWPMI_GetState(SWPMI_HandleTypeDef *hswpmi);
0458 uint32_t               HAL_SWPMI_GetError(SWPMI_HandleTypeDef *hswpmi);
0459 
0460 /**
0461   * @}
0462   */
0463 
0464 /* Private types -------------------------------------------------------------*/
0465 /** @defgroup SWPMI_Private_Types SWPMI Private Types
0466   * @ingroup RTEMSBSPsARMSTM32H7
0467   * @{
0468   */
0469 
0470 /**
0471   * @}
0472   */
0473 
0474 /* Private variables ---------------------------------------------------------*/
0475 /** @defgroup SWPMI_Private_Variables SWPMI Private Variables
0476   * @ingroup RTEMSBSPsARMSTM32H7
0477   * @{
0478   */
0479 
0480 /**
0481   * @}
0482   */
0483 
0484 /* Private constants ---------------------------------------------------------*/
0485 /** @defgroup SWPMI_Private_Constants SWPMI Private Constants
0486   * @ingroup RTEMSBSPsARMSTM32H7
0487   * @{
0488   */
0489 
0490 /**
0491   * @}
0492   */
0493 
0494 /* Private macros ------------------------------------------------------------*/
0495 /** @defgroup SWPMI_Private_Macros SWPMI Private Macros
0496   * @ingroup RTEMSBSPsARMSTM32H7
0497   * @{
0498   */
0499 
0500 
0501 #define IS_SWPMI_VOLTAGE_CLASS(__CLASS__)    (((__CLASS__) == SWPMI_VOLTAGE_CLASS_C) || \
0502                                               ((__CLASS__) == SWPMI_VOLTAGE_CLASS_B))
0503 
0504 #define IS_SWPMI_BITRATE_VALUE(__VALUE__)    (((__VALUE__) <= 255U))
0505 
0506 
0507 #define IS_SWPMI_TX_BUFFERING_MODE(__MODE__) (((__MODE__) == SWPMI_TX_NO_SOFTWAREBUFFER) || \
0508                                               ((__MODE__) == SWPMI_TX_MULTI_SOFTWAREBUFFER))
0509 
0510 
0511 #define IS_SWPMI_RX_BUFFERING_MODE(__MODE__) (((__MODE__) == SWPMI_RX_NO_SOFTWAREBUFFER) || \
0512                                               ((__MODE__) == SWPMI_RX_MULTI_SOFTWAREBUFFER))
0513 
0514 /**
0515   * @}
0516   */
0517 
0518 /**
0519   * @}
0520   */
0521 
0522 
0523 /**
0524   * @}
0525   */
0526 
0527 #ifdef __cplusplus
0528 }
0529 #endif
0530 
0531 #endif /* STM32H7xx_HAL_SWPMI_H */