pro vyuku PSS v Jecne

Committer:
vladvana
Date:
Sun Sep 24 12:31:52 2017 +0000
Revision:
0:23d1f73bf130
podklady pro cviceni z PSS

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vladvana 0:23d1f73bf130 1 /**
vladvana 0:23d1f73bf130 2 ******************************************************************************
vladvana 0:23d1f73bf130 3 * @file stm32f1xx_hal_pcd.h
vladvana 0:23d1f73bf130 4 * @author MCD Application Team
vladvana 0:23d1f73bf130 5 * @version V1.0.0
vladvana 0:23d1f73bf130 6 * @date 15-December-2014
vladvana 0:23d1f73bf130 7 * @brief Header file of PCD HAL module.
vladvana 0:23d1f73bf130 8 ******************************************************************************
vladvana 0:23d1f73bf130 9 * @attention
vladvana 0:23d1f73bf130 10 *
vladvana 0:23d1f73bf130 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
vladvana 0:23d1f73bf130 12 *
vladvana 0:23d1f73bf130 13 * Redistribution and use in source and binary forms, with or without modification,
vladvana 0:23d1f73bf130 14 * are permitted provided that the following conditions are met:
vladvana 0:23d1f73bf130 15 * 1. Redistributions of source code must retain the above copyright notice,
vladvana 0:23d1f73bf130 16 * this list of conditions and the following disclaimer.
vladvana 0:23d1f73bf130 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
vladvana 0:23d1f73bf130 18 * this list of conditions and the following disclaimer in the documentation
vladvana 0:23d1f73bf130 19 * and/or other materials provided with the distribution.
vladvana 0:23d1f73bf130 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
vladvana 0:23d1f73bf130 21 * may be used to endorse or promote products derived from this software
vladvana 0:23d1f73bf130 22 * without specific prior written permission.
vladvana 0:23d1f73bf130 23 *
vladvana 0:23d1f73bf130 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
vladvana 0:23d1f73bf130 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
vladvana 0:23d1f73bf130 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
vladvana 0:23d1f73bf130 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
vladvana 0:23d1f73bf130 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
vladvana 0:23d1f73bf130 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
vladvana 0:23d1f73bf130 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
vladvana 0:23d1f73bf130 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
vladvana 0:23d1f73bf130 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
vladvana 0:23d1f73bf130 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
vladvana 0:23d1f73bf130 34 *
vladvana 0:23d1f73bf130 35 ******************************************************************************
vladvana 0:23d1f73bf130 36 */
vladvana 0:23d1f73bf130 37
vladvana 0:23d1f73bf130 38 /* Define to prevent recursive inclusion -------------------------------------*/
vladvana 0:23d1f73bf130 39 #ifndef __STM32F1xx_HAL_PCD_H
vladvana 0:23d1f73bf130 40 #define __STM32F1xx_HAL_PCD_H
vladvana 0:23d1f73bf130 41
vladvana 0:23d1f73bf130 42 #ifdef __cplusplus
vladvana 0:23d1f73bf130 43 extern "C" {
vladvana 0:23d1f73bf130 44 #endif
vladvana 0:23d1f73bf130 45
vladvana 0:23d1f73bf130 46 #if defined(STM32F102x6) || defined(STM32F102xB) || \
vladvana 0:23d1f73bf130 47 defined(STM32F103x6) || defined(STM32F103xB) || \
vladvana 0:23d1f73bf130 48 defined(STM32F103xE) || defined(STM32F103xG) || \
vladvana 0:23d1f73bf130 49 defined(STM32F105xC) || defined(STM32F107xC)
vladvana 0:23d1f73bf130 50
vladvana 0:23d1f73bf130 51 /* Includes ------------------------------------------------------------------*/
vladvana 0:23d1f73bf130 52 #include "stm32f1xx_ll_usb.h"
vladvana 0:23d1f73bf130 53
vladvana 0:23d1f73bf130 54 /** @addtogroup STM32F1xx_HAL_Driver
vladvana 0:23d1f73bf130 55 * @{
vladvana 0:23d1f73bf130 56 */
vladvana 0:23d1f73bf130 57
vladvana 0:23d1f73bf130 58 /** @addtogroup PCD
vladvana 0:23d1f73bf130 59 * @{
vladvana 0:23d1f73bf130 60 */
vladvana 0:23d1f73bf130 61
vladvana 0:23d1f73bf130 62 /* Exported types ------------------------------------------------------------*/
vladvana 0:23d1f73bf130 63 /** @defgroup PCD_Exported_Types PCD Exported Types
vladvana 0:23d1f73bf130 64 * @{
vladvana 0:23d1f73bf130 65 */
vladvana 0:23d1f73bf130 66
vladvana 0:23d1f73bf130 67 /**
vladvana 0:23d1f73bf130 68 * @brief PCD State structure definition
vladvana 0:23d1f73bf130 69 */
vladvana 0:23d1f73bf130 70 typedef enum
vladvana 0:23d1f73bf130 71 {
vladvana 0:23d1f73bf130 72 HAL_PCD_STATE_RESET = 0x00,
vladvana 0:23d1f73bf130 73 HAL_PCD_STATE_READY = 0x01,
vladvana 0:23d1f73bf130 74 HAL_PCD_STATE_ERROR = 0x02,
vladvana 0:23d1f73bf130 75 HAL_PCD_STATE_BUSY = 0x03,
vladvana 0:23d1f73bf130 76 HAL_PCD_STATE_TIMEOUT = 0x04
vladvana 0:23d1f73bf130 77 } PCD_StateTypeDef;
vladvana 0:23d1f73bf130 78
vladvana 0:23d1f73bf130 79 #if defined (USB)
vladvana 0:23d1f73bf130 80 /**
vladvana 0:23d1f73bf130 81 * @brief PCD double buffered endpoint direction
vladvana 0:23d1f73bf130 82 */
vladvana 0:23d1f73bf130 83 typedef enum
vladvana 0:23d1f73bf130 84 {
vladvana 0:23d1f73bf130 85 PCD_EP_DBUF_OUT,
vladvana 0:23d1f73bf130 86 PCD_EP_DBUF_IN,
vladvana 0:23d1f73bf130 87 PCD_EP_DBUF_ERR,
vladvana 0:23d1f73bf130 88 }PCD_EP_DBUF_DIR;
vladvana 0:23d1f73bf130 89
vladvana 0:23d1f73bf130 90 /**
vladvana 0:23d1f73bf130 91 * @brief PCD endpoint buffer number
vladvana 0:23d1f73bf130 92 */
vladvana 0:23d1f73bf130 93 typedef enum
vladvana 0:23d1f73bf130 94 {
vladvana 0:23d1f73bf130 95 PCD_EP_NOBUF,
vladvana 0:23d1f73bf130 96 PCD_EP_BUF0,
vladvana 0:23d1f73bf130 97 PCD_EP_BUF1
vladvana 0:23d1f73bf130 98 }PCD_EP_BUF_NUM;
vladvana 0:23d1f73bf130 99 #endif /* USB */
vladvana 0:23d1f73bf130 100
vladvana 0:23d1f73bf130 101 #if defined (USB_OTG_FS)
vladvana 0:23d1f73bf130 102 typedef USB_OTG_GlobalTypeDef PCD_TypeDef;
vladvana 0:23d1f73bf130 103 typedef USB_OTG_CfgTypeDef PCD_InitTypeDef;
vladvana 0:23d1f73bf130 104 typedef USB_OTG_EPTypeDef PCD_EPTypeDef;
vladvana 0:23d1f73bf130 105 #endif /* USB_OTG_FS */
vladvana 0:23d1f73bf130 106
vladvana 0:23d1f73bf130 107 #if defined (USB)
vladvana 0:23d1f73bf130 108 typedef USB_TypeDef PCD_TypeDef;
vladvana 0:23d1f73bf130 109 typedef USB_CfgTypeDef PCD_InitTypeDef;
vladvana 0:23d1f73bf130 110 typedef USB_EPTypeDef PCD_EPTypeDef;
vladvana 0:23d1f73bf130 111 #endif /* USB */
vladvana 0:23d1f73bf130 112
vladvana 0:23d1f73bf130 113 /**
vladvana 0:23d1f73bf130 114 * @brief PCD Handle Structure definition
vladvana 0:23d1f73bf130 115 */
vladvana 0:23d1f73bf130 116 typedef struct
vladvana 0:23d1f73bf130 117 {
vladvana 0:23d1f73bf130 118 PCD_TypeDef *Instance; /*!< Register base address */
vladvana 0:23d1f73bf130 119 PCD_InitTypeDef Init; /*!< PCD required parameters */
vladvana 0:23d1f73bf130 120 __IO uint8_t USB_Address; /*!< USB Address: not used by USB OTG FS */
vladvana 0:23d1f73bf130 121 PCD_EPTypeDef IN_ep[15]; /*!< IN endpoint parameters */
vladvana 0:23d1f73bf130 122 PCD_EPTypeDef OUT_ep[15]; /*!< OUT endpoint parameters */
vladvana 0:23d1f73bf130 123 HAL_LockTypeDef Lock; /*!< PCD peripheral status */
vladvana 0:23d1f73bf130 124 __IO PCD_StateTypeDef State; /*!< PCD communication state */
vladvana 0:23d1f73bf130 125 uint32_t Setup[12]; /*!< Setup packet buffer */
vladvana 0:23d1f73bf130 126 void *pData; /*!< Pointer to upper stack Handler */
vladvana 0:23d1f73bf130 127 } PCD_HandleTypeDef;
vladvana 0:23d1f73bf130 128
vladvana 0:23d1f73bf130 129 /**
vladvana 0:23d1f73bf130 130 * @}
vladvana 0:23d1f73bf130 131 */
vladvana 0:23d1f73bf130 132
vladvana 0:23d1f73bf130 133 /* Include PCD HAL Extension module */
vladvana 0:23d1f73bf130 134 #include "stm32f1xx_hal_pcd_ex.h"
vladvana 0:23d1f73bf130 135
vladvana 0:23d1f73bf130 136 /* Exported constants --------------------------------------------------------*/
vladvana 0:23d1f73bf130 137 /** @defgroup PCD_Exported_Constants PCD Exported Constants
vladvana 0:23d1f73bf130 138 * @{
vladvana 0:23d1f73bf130 139 */
vladvana 0:23d1f73bf130 140
vladvana 0:23d1f73bf130 141 /** @defgroup PCD_Speed PCD Speed
vladvana 0:23d1f73bf130 142 * @{
vladvana 0:23d1f73bf130 143 */
vladvana 0:23d1f73bf130 144 #define PCD_SPEED_HIGH 0 /* Not Supported */
vladvana 0:23d1f73bf130 145 #define PCD_SPEED_HIGH_IN_FULL 1 /* Not Supported */
vladvana 0:23d1f73bf130 146 #define PCD_SPEED_FULL 2
vladvana 0:23d1f73bf130 147 /**
vladvana 0:23d1f73bf130 148 * @}
vladvana 0:23d1f73bf130 149 */
vladvana 0:23d1f73bf130 150
vladvana 0:23d1f73bf130 151 /** @defgroup PCD_PHY_Module PCD PHY Module
vladvana 0:23d1f73bf130 152 * @{
vladvana 0:23d1f73bf130 153 */
vladvana 0:23d1f73bf130 154 #define PCD_PHY_EMBEDDED 2
vladvana 0:23d1f73bf130 155 /**
vladvana 0:23d1f73bf130 156 * @}
vladvana 0:23d1f73bf130 157 */
vladvana 0:23d1f73bf130 158
vladvana 0:23d1f73bf130 159 /**
vladvana 0:23d1f73bf130 160 * @}
vladvana 0:23d1f73bf130 161 */
vladvana 0:23d1f73bf130 162
vladvana 0:23d1f73bf130 163 /* Exported macros -----------------------------------------------------------*/
vladvana 0:23d1f73bf130 164 /** @defgroup PCD_Exported_Macros PCD Exported Macros
vladvana 0:23d1f73bf130 165 * @brief macros to handle interrupts and specific clock configurations
vladvana 0:23d1f73bf130 166 * @{
vladvana 0:23d1f73bf130 167 */
vladvana 0:23d1f73bf130 168 #if defined (USB_OTG_FS)
vladvana 0:23d1f73bf130 169
vladvana 0:23d1f73bf130 170 #define __HAL_PCD_ENABLE(__HANDLE__) USB_EnableGlobalInt ((__HANDLE__)->Instance)
vladvana 0:23d1f73bf130 171 #define __HAL_PCD_DISABLE(__HANDLE__) USB_DisableGlobalInt ((__HANDLE__)->Instance)
vladvana 0:23d1f73bf130 172
vladvana 0:23d1f73bf130 173 #define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__) ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__))
vladvana 0:23d1f73bf130 174 #define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) = (__INTERRUPT__))
vladvana 0:23d1f73bf130 175 #define __HAL_PCD_IS_INVALID_INTERRUPT(__HANDLE__) (USB_ReadInterrupts((__HANDLE__)->Instance) == 0)
vladvana 0:23d1f73bf130 176
vladvana 0:23d1f73bf130 177 #define __HAL_PCD_UNGATE_PHYCLOCK(__HANDLE__) *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) &= \
vladvana 0:23d1f73bf130 178 ~(USB_OTG_PCGCCTL_STOPCLK)
vladvana 0:23d1f73bf130 179
vladvana 0:23d1f73bf130 180 #define __HAL_PCD_GATE_PHYCLOCK(__HANDLE__) *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) |= USB_OTG_PCGCCTL_STOPCLK
vladvana 0:23d1f73bf130 181
vladvana 0:23d1f73bf130 182 #define __HAL_PCD_IS_PHY_SUSPENDED(__HANDLE__) ((*(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE))&0x10)
vladvana 0:23d1f73bf130 183
vladvana 0:23d1f73bf130 184 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= USB_OTG_FS_WAKEUP_EXTI_LINE
vladvana 0:23d1f73bf130 185 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE)
vladvana 0:23d1f73bf130 186 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_FS_WAKEUP_EXTI_LINE)
vladvana 0:23d1f73bf130 187 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = USB_OTG_FS_WAKEUP_EXTI_LINE
vladvana 0:23d1f73bf130 188
vladvana 0:23d1f73bf130 189 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE() EXTI->FTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE);\
vladvana 0:23d1f73bf130 190 EXTI->RTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE
vladvana 0:23d1f73bf130 191
vladvana 0:23d1f73bf130 192 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_FALLING_EDGE() EXTI->FTSR |= (USB_OTG_FS_WAKEUP_EXTI_LINE);\
vladvana 0:23d1f73bf130 193 EXTI->RTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE)
vladvana 0:23d1f73bf130 194
vladvana 0:23d1f73bf130 195 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE() EXTI->RTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE);\
vladvana 0:23d1f73bf130 196 EXTI->FTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE);\
vladvana 0:23d1f73bf130 197 EXTI->RTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE;\
vladvana 0:23d1f73bf130 198 EXTI->FTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE
vladvana 0:23d1f73bf130 199
vladvana 0:23d1f73bf130 200 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_GENERATE_SWIT() (EXTI->SWIER |= USB_OTG_FS_WAKEUP_EXTI_LINE)
vladvana 0:23d1f73bf130 201 #endif /* USB_OTG_FS */
vladvana 0:23d1f73bf130 202
vladvana 0:23d1f73bf130 203 #if defined (USB)
vladvana 0:23d1f73bf130 204 #define __HAL_PCD_ENABLE(__HANDLE__) USB_EnableGlobalInt ((__HANDLE__)->Instance)
vladvana 0:23d1f73bf130 205 #define __HAL_PCD_DISABLE(__HANDLE__) USB_DisableGlobalInt ((__HANDLE__)->Instance)
vladvana 0:23d1f73bf130 206 #define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__) ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__))
vladvana 0:23d1f73bf130 207 #define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->ISTR) &= ~(__INTERRUPT__))
vladvana 0:23d1f73bf130 208
vladvana 0:23d1f73bf130 209 #define __HAL_USB_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= USB_WAKEUP_EXTI_LINE
vladvana 0:23d1f73bf130 210 #define __HAL_USB_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_WAKEUP_EXTI_LINE)
vladvana 0:23d1f73bf130 211 #define __HAL_USB_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_WAKEUP_EXTI_LINE)
vladvana 0:23d1f73bf130 212 #define __HAL_USB_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = USB_WAKEUP_EXTI_LINE
vladvana 0:23d1f73bf130 213
vladvana 0:23d1f73bf130 214 #define __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_EDGE() EXTI->FTSR &= ~(USB_WAKEUP_EXTI_LINE);\
vladvana 0:23d1f73bf130 215 EXTI->RTSR |= USB_WAKEUP_EXTI_LINE
vladvana 0:23d1f73bf130 216
vladvana 0:23d1f73bf130 217 #define __HAL_USB_WAKEUP_EXTI_ENABLE_FALLING_EDGE() EXTI->FTSR |= (USB_WAKEUP_EXTI_LINE);\
vladvana 0:23d1f73bf130 218 EXTI->RTSR &= ~(USB_WAKEUP_EXTI_LINE)
vladvana 0:23d1f73bf130 219
vladvana 0:23d1f73bf130 220 #define __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE() EXTI->RTSR &= ~(USB_WAKEUP_EXTI_LINE);\
vladvana 0:23d1f73bf130 221 EXTI->FTSR &= ~(USB_WAKEUP_EXTI_LINE);\
vladvana 0:23d1f73bf130 222 EXTI->RTSR |= USB_WAKEUP_EXTI_LINE;\
vladvana 0:23d1f73bf130 223 EXTI->FTSR |= USB_WAKEUP_EXTI_LINE
vladvana 0:23d1f73bf130 224 #endif /* USB */
vladvana 0:23d1f73bf130 225
vladvana 0:23d1f73bf130 226 /**
vladvana 0:23d1f73bf130 227 * @}
vladvana 0:23d1f73bf130 228 */
vladvana 0:23d1f73bf130 229
vladvana 0:23d1f73bf130 230 /* Exported functions --------------------------------------------------------*/
vladvana 0:23d1f73bf130 231 /** @addtogroup PCD_Exported_Functions PCD Exported Functions
vladvana 0:23d1f73bf130 232 * @{
vladvana 0:23d1f73bf130 233 */
vladvana 0:23d1f73bf130 234
vladvana 0:23d1f73bf130 235 /* Initialization/de-initialization functions ********************************/
vladvana 0:23d1f73bf130 236 /** @addtogroup PCD_Exported_Functions_Group1 Initialization and de-initialization functions
vladvana 0:23d1f73bf130 237 * @{
vladvana 0:23d1f73bf130 238 */
vladvana 0:23d1f73bf130 239 HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 240 HAL_StatusTypeDef HAL_PCD_DeInit (PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 241 void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 242 void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 243 /**
vladvana 0:23d1f73bf130 244 * @}
vladvana 0:23d1f73bf130 245 */
vladvana 0:23d1f73bf130 246
vladvana 0:23d1f73bf130 247 /* I/O operation functions ***************************************************/
vladvana 0:23d1f73bf130 248 /* Non-Blocking mode: Interrupt */
vladvana 0:23d1f73bf130 249 /** @addtogroup PCD_Exported_Functions_Group2 IO operation functions
vladvana 0:23d1f73bf130 250 * @{
vladvana 0:23d1f73bf130 251 */
vladvana 0:23d1f73bf130 252 HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 253 HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 254 void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 255
vladvana 0:23d1f73bf130 256 void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum);
vladvana 0:23d1f73bf130 257 void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum);
vladvana 0:23d1f73bf130 258 void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 259 void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 260 void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 261 void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 262 void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 263 void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum);
vladvana 0:23d1f73bf130 264 void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum);
vladvana 0:23d1f73bf130 265 void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 266 void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 267 /**
vladvana 0:23d1f73bf130 268 * @}
vladvana 0:23d1f73bf130 269 */
vladvana 0:23d1f73bf130 270
vladvana 0:23d1f73bf130 271 /* Peripheral Control functions **********************************************/
vladvana 0:23d1f73bf130 272 /** @addtogroup PCD_Exported_Functions_Group3 Peripheral Control functions
vladvana 0:23d1f73bf130 273 * @{
vladvana 0:23d1f73bf130 274 */
vladvana 0:23d1f73bf130 275 HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 276 HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 277 HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address);
vladvana 0:23d1f73bf130 278 HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint16_t ep_mps, uint8_t ep_type);
vladvana 0:23d1f73bf130 279 HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
vladvana 0:23d1f73bf130 280 HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len);
vladvana 0:23d1f73bf130 281 HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len);
vladvana 0:23d1f73bf130 282 uint16_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
vladvana 0:23d1f73bf130 283 HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
vladvana 0:23d1f73bf130 284 HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
vladvana 0:23d1f73bf130 285 HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
vladvana 0:23d1f73bf130 286 HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 287 HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 288 /**
vladvana 0:23d1f73bf130 289 * @}
vladvana 0:23d1f73bf130 290 */
vladvana 0:23d1f73bf130 291
vladvana 0:23d1f73bf130 292 /* Peripheral State functions ************************************************/
vladvana 0:23d1f73bf130 293 /** @addtogroup PCD_Exported_Functions_Group4 Peripheral State functions
vladvana 0:23d1f73bf130 294 * @{
vladvana 0:23d1f73bf130 295 */
vladvana 0:23d1f73bf130 296 PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd);
vladvana 0:23d1f73bf130 297 /**
vladvana 0:23d1f73bf130 298 * @}
vladvana 0:23d1f73bf130 299 */
vladvana 0:23d1f73bf130 300
vladvana 0:23d1f73bf130 301 /**
vladvana 0:23d1f73bf130 302 * @}
vladvana 0:23d1f73bf130 303 */
vladvana 0:23d1f73bf130 304
vladvana 0:23d1f73bf130 305 /* Private constants ---------------------------------------------------------*/
vladvana 0:23d1f73bf130 306 /** @defgroup PCD_Private_Constants PCD Private Constants
vladvana 0:23d1f73bf130 307 * @{
vladvana 0:23d1f73bf130 308 */
vladvana 0:23d1f73bf130 309 /** @defgroup USB_EXTI_Line_Interrupt USB EXTI line interrupt
vladvana 0:23d1f73bf130 310 * @{
vladvana 0:23d1f73bf130 311 */
vladvana 0:23d1f73bf130 312 #if defined (USB_OTG_FS)
vladvana 0:23d1f73bf130 313 #define USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE ((uint32_t)0x08)
vladvana 0:23d1f73bf130 314 #define USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE ((uint32_t)0x0C)
vladvana 0:23d1f73bf130 315 #define USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE ((uint32_t)0x10)
vladvana 0:23d1f73bf130 316
vladvana 0:23d1f73bf130 317 #define USB_OTG_FS_WAKEUP_EXTI_LINE ((uint32_t)0x00040000) /*!< External interrupt line 18 Connected to the USB EXTI Line */
vladvana 0:23d1f73bf130 318 #endif /* USB_OTG_FS */
vladvana 0:23d1f73bf130 319
vladvana 0:23d1f73bf130 320 #if defined (USB)
vladvana 0:23d1f73bf130 321 #define USB_WAKEUP_EXTI_LINE ((uint32_t)0x00040000) /*!< External interrupt line 18 Connected to the USB EXTI Line */
vladvana 0:23d1f73bf130 322 #endif /* USB */
vladvana 0:23d1f73bf130 323 /**
vladvana 0:23d1f73bf130 324 * @}
vladvana 0:23d1f73bf130 325 */
vladvana 0:23d1f73bf130 326
vladvana 0:23d1f73bf130 327 #if defined (USB)
vladvana 0:23d1f73bf130 328 /** @defgroup PCD_EP0_MPS PCD EP0 MPS
vladvana 0:23d1f73bf130 329 * @{
vladvana 0:23d1f73bf130 330 */
vladvana 0:23d1f73bf130 331 #define PCD_EP0MPS_64 DEP0CTL_MPS_64
vladvana 0:23d1f73bf130 332 #define PCD_EP0MPS_32 DEP0CTL_MPS_32
vladvana 0:23d1f73bf130 333 #define PCD_EP0MPS_16 DEP0CTL_MPS_16
vladvana 0:23d1f73bf130 334 #define PCD_EP0MPS_08 DEP0CTL_MPS_8
vladvana 0:23d1f73bf130 335 /**
vladvana 0:23d1f73bf130 336 * @}
vladvana 0:23d1f73bf130 337 */
vladvana 0:23d1f73bf130 338
vladvana 0:23d1f73bf130 339 /** @defgroup PCD_ENDP PCD ENDP
vladvana 0:23d1f73bf130 340 * @{
vladvana 0:23d1f73bf130 341 */
vladvana 0:23d1f73bf130 342 #define PCD_ENDP0 ((uint8_t)0)
vladvana 0:23d1f73bf130 343 #define PCD_ENDP1 ((uint8_t)1)
vladvana 0:23d1f73bf130 344 #define PCD_ENDP2 ((uint8_t)2)
vladvana 0:23d1f73bf130 345 #define PCD_ENDP3 ((uint8_t)3)
vladvana 0:23d1f73bf130 346 #define PCD_ENDP4 ((uint8_t)4)
vladvana 0:23d1f73bf130 347 #define PCD_ENDP5 ((uint8_t)5)
vladvana 0:23d1f73bf130 348 #define PCD_ENDP6 ((uint8_t)6)
vladvana 0:23d1f73bf130 349 #define PCD_ENDP7 ((uint8_t)7)
vladvana 0:23d1f73bf130 350 /**
vladvana 0:23d1f73bf130 351 * @}
vladvana 0:23d1f73bf130 352 */
vladvana 0:23d1f73bf130 353
vladvana 0:23d1f73bf130 354 /** @defgroup PCD_ENDP_Kind PCD Endpoint Kind
vladvana 0:23d1f73bf130 355 * @{
vladvana 0:23d1f73bf130 356 */
vladvana 0:23d1f73bf130 357 #define PCD_SNG_BUF 0
vladvana 0:23d1f73bf130 358 #define PCD_DBL_BUF 1
vladvana 0:23d1f73bf130 359 /**
vladvana 0:23d1f73bf130 360 * @}
vladvana 0:23d1f73bf130 361 */
vladvana 0:23d1f73bf130 362 #endif /* USB */
vladvana 0:23d1f73bf130 363 /**
vladvana 0:23d1f73bf130 364 * @}
vladvana 0:23d1f73bf130 365 */
vladvana 0:23d1f73bf130 366
vladvana 0:23d1f73bf130 367 /* Private macros ------------------------------------------------------------*/
vladvana 0:23d1f73bf130 368 /** @addtogroup PCD_Private_Macros PCD Private Macros
vladvana 0:23d1f73bf130 369 * @{
vladvana 0:23d1f73bf130 370 */
vladvana 0:23d1f73bf130 371 #if defined (USB)
vladvana 0:23d1f73bf130 372 /* SetENDPOINT */
vladvana 0:23d1f73bf130 373 #define PCD_SET_ENDPOINT(USBx, bEpNum,wRegValue) (*(&(USBx)->EP0R + (bEpNum) * 2)= (uint16_t)(wRegValue))
vladvana 0:23d1f73bf130 374
vladvana 0:23d1f73bf130 375 /* GetENDPOINT */
vladvana 0:23d1f73bf130 376 #define PCD_GET_ENDPOINT(USBx, bEpNum) (*(&(USBx)->EP0R + (bEpNum) * 2))
vladvana 0:23d1f73bf130 377
vladvana 0:23d1f73bf130 378 /* ENDPOINT transfer */
vladvana 0:23d1f73bf130 379 #define USB_EP0StartXfer USB_EPStartXfer
vladvana 0:23d1f73bf130 380
vladvana 0:23d1f73bf130 381 /**
vladvana 0:23d1f73bf130 382 * @brief sets the type in the endpoint register(bits EP_TYPE[1:0])
vladvana 0:23d1f73bf130 383 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 384 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 385 * @param wType: Endpoint Type.
vladvana 0:23d1f73bf130 386 * @retval None
vladvana 0:23d1f73bf130 387 */
vladvana 0:23d1f73bf130 388 #define PCD_SET_EPTYPE(USBx, bEpNum,wType) (PCD_SET_ENDPOINT((USBx), (bEpNum),\
vladvana 0:23d1f73bf130 389 ((PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EP_T_MASK) | (wType) )))
vladvana 0:23d1f73bf130 390
vladvana 0:23d1f73bf130 391 /**
vladvana 0:23d1f73bf130 392 * @brief gets the type in the endpoint register(bits EP_TYPE[1:0])
vladvana 0:23d1f73bf130 393 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 394 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 395 * @retval Endpoint Type
vladvana 0:23d1f73bf130 396 */
vladvana 0:23d1f73bf130 397 #define PCD_GET_EPTYPE(USBx, bEpNum) (PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EP_T_FIELD)
vladvana 0:23d1f73bf130 398
vladvana 0:23d1f73bf130 399 /**
vladvana 0:23d1f73bf130 400 * @brief free buffer used from the application realizing it to the line
vladvana 0:23d1f73bf130 401 toggles bit SW_BUF in the double buffered endpoint register
vladvana 0:23d1f73bf130 402 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 403 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 404 * @param bDir: Direction
vladvana 0:23d1f73bf130 405 * @retval None
vladvana 0:23d1f73bf130 406 */
vladvana 0:23d1f73bf130 407 #define PCD_FreeUserBuffer(USBx, bEpNum, bDir)\
vladvana 0:23d1f73bf130 408 {\
vladvana 0:23d1f73bf130 409 if ((bDir) == PCD_EP_DBUF_OUT)\
vladvana 0:23d1f73bf130 410 { /* OUT double buffered endpoint */\
vladvana 0:23d1f73bf130 411 PCD_TX_DTOG((USBx), (bEpNum));\
vladvana 0:23d1f73bf130 412 }\
vladvana 0:23d1f73bf130 413 else if ((bDir) == PCD_EP_DBUF_IN)\
vladvana 0:23d1f73bf130 414 { /* IN double buffered endpoint */\
vladvana 0:23d1f73bf130 415 PCD_RX_DTOG((USBx), (bEpNum));\
vladvana 0:23d1f73bf130 416 }\
vladvana 0:23d1f73bf130 417 }
vladvana 0:23d1f73bf130 418
vladvana 0:23d1f73bf130 419 /**
vladvana 0:23d1f73bf130 420 * @brief gets direction of the double buffered endpoint
vladvana 0:23d1f73bf130 421 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 422 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 423 * @retval EP_DBUF_OUT, EP_DBUF_IN,
vladvana 0:23d1f73bf130 424 * EP_DBUF_ERR if the endpoint counter not yet programmed.
vladvana 0:23d1f73bf130 425 */
vladvana 0:23d1f73bf130 426 #define PCD_GET_DB_DIR(USBx, bEpNum)\
vladvana 0:23d1f73bf130 427 {\
vladvana 0:23d1f73bf130 428 if ((uint16_t)(*PCD_EP_RX_CNT((USBx), (bEpNum)) & 0xFC00) != 0)\
vladvana 0:23d1f73bf130 429 return(PCD_EP_DBUF_OUT);\
vladvana 0:23d1f73bf130 430 else if (((uint16_t)(*PCD_EP_TX_CNT((USBx), (bEpNum))) & 0x03FF) != 0)\
vladvana 0:23d1f73bf130 431 return(PCD_EP_DBUF_IN);\
vladvana 0:23d1f73bf130 432 else\
vladvana 0:23d1f73bf130 433 return(PCD_EP_DBUF_ERR);\
vladvana 0:23d1f73bf130 434 }
vladvana 0:23d1f73bf130 435
vladvana 0:23d1f73bf130 436 /**
vladvana 0:23d1f73bf130 437 * @brief sets the status for tx transfer (bits STAT_TX[1:0]).
vladvana 0:23d1f73bf130 438 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 439 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 440 * @param wState: new state
vladvana 0:23d1f73bf130 441 * @retval None
vladvana 0:23d1f73bf130 442 */
vladvana 0:23d1f73bf130 443 #define PCD_SET_EP_TX_STATUS(USBx, bEpNum, wState) { register uint16_t _wRegVal;\
vladvana 0:23d1f73bf130 444 \
vladvana 0:23d1f73bf130 445 _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPTX_DTOGMASK;\
vladvana 0:23d1f73bf130 446 /* toggle first bit ? */ \
vladvana 0:23d1f73bf130 447 if((USB_EPTX_DTOG1 & (wState))!= 0)\
vladvana 0:23d1f73bf130 448 { \
vladvana 0:23d1f73bf130 449 _wRegVal ^= USB_EPTX_DTOG1; \
vladvana 0:23d1f73bf130 450 } \
vladvana 0:23d1f73bf130 451 /* toggle second bit ? */ \
vladvana 0:23d1f73bf130 452 if((USB_EPTX_DTOG2 & (wState))!= 0) \
vladvana 0:23d1f73bf130 453 { \
vladvana 0:23d1f73bf130 454 _wRegVal ^= USB_EPTX_DTOG2; \
vladvana 0:23d1f73bf130 455 } \
vladvana 0:23d1f73bf130 456 PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX|USB_EP_CTR_TX));\
vladvana 0:23d1f73bf130 457 } /* PCD_SET_EP_TX_STATUS */
vladvana 0:23d1f73bf130 458
vladvana 0:23d1f73bf130 459 /**
vladvana 0:23d1f73bf130 460 * @brief sets the status for rx transfer (bits STAT_TX[1:0])
vladvana 0:23d1f73bf130 461 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 462 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 463 * @param wState: new state
vladvana 0:23d1f73bf130 464 * @retval None
vladvana 0:23d1f73bf130 465 */
vladvana 0:23d1f73bf130 466 #define PCD_SET_EP_RX_STATUS(USBx, bEpNum,wState) {\
vladvana 0:23d1f73bf130 467 register uint16_t _wRegVal; \
vladvana 0:23d1f73bf130 468 \
vladvana 0:23d1f73bf130 469 _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPRX_DTOGMASK;\
vladvana 0:23d1f73bf130 470 /* toggle first bit ? */ \
vladvana 0:23d1f73bf130 471 if((USB_EPRX_DTOG1 & (wState))!= 0) \
vladvana 0:23d1f73bf130 472 { \
vladvana 0:23d1f73bf130 473 _wRegVal ^= USB_EPRX_DTOG1; \
vladvana 0:23d1f73bf130 474 } \
vladvana 0:23d1f73bf130 475 /* toggle second bit ? */ \
vladvana 0:23d1f73bf130 476 if((USB_EPRX_DTOG2 & (wState))!= 0) \
vladvana 0:23d1f73bf130 477 { \
vladvana 0:23d1f73bf130 478 _wRegVal ^= USB_EPRX_DTOG2; \
vladvana 0:23d1f73bf130 479 } \
vladvana 0:23d1f73bf130 480 PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX|USB_EP_CTR_TX)); \
vladvana 0:23d1f73bf130 481 } /* PCD_SET_EP_RX_STATUS */
vladvana 0:23d1f73bf130 482
vladvana 0:23d1f73bf130 483 /**
vladvana 0:23d1f73bf130 484 * @brief sets the status for rx & tx (bits STAT_TX[1:0] & STAT_RX[1:0])
vladvana 0:23d1f73bf130 485 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 486 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 487 * @param wStaterx: new state.
vladvana 0:23d1f73bf130 488 * @param wStatetx: new state.
vladvana 0:23d1f73bf130 489 * @retval None
vladvana 0:23d1f73bf130 490 */
vladvana 0:23d1f73bf130 491 #define PCD_SET_EP_TXRX_STATUS(USBx,bEpNum,wStaterx,wStatetx) {\
vladvana 0:23d1f73bf130 492 register uint32_t _wRegVal; \
vladvana 0:23d1f73bf130 493 \
vladvana 0:23d1f73bf130 494 _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & (USB_EPRX_DTOGMASK |USB_EPTX_STAT) ;\
vladvana 0:23d1f73bf130 495 /* toggle first bit ? */ \
vladvana 0:23d1f73bf130 496 if((USB_EPRX_DTOG1 & ((wStaterx)))!= 0) \
vladvana 0:23d1f73bf130 497 { \
vladvana 0:23d1f73bf130 498 _wRegVal ^= USB_EPRX_DTOG1; \
vladvana 0:23d1f73bf130 499 } \
vladvana 0:23d1f73bf130 500 /* toggle second bit ? */ \
vladvana 0:23d1f73bf130 501 if((USB_EPRX_DTOG2 & (wStaterx))!= 0) \
vladvana 0:23d1f73bf130 502 { \
vladvana 0:23d1f73bf130 503 _wRegVal ^= USB_EPRX_DTOG2; \
vladvana 0:23d1f73bf130 504 } \
vladvana 0:23d1f73bf130 505 /* toggle first bit ? */ \
vladvana 0:23d1f73bf130 506 if((USB_EPTX_DTOG1 & (wStatetx))!= 0) \
vladvana 0:23d1f73bf130 507 { \
vladvana 0:23d1f73bf130 508 _wRegVal ^= USB_EPTX_DTOG1; \
vladvana 0:23d1f73bf130 509 } \
vladvana 0:23d1f73bf130 510 /* toggle second bit ? */ \
vladvana 0:23d1f73bf130 511 if((USB_EPTX_DTOG2 & (wStatetx))!= 0) \
vladvana 0:23d1f73bf130 512 { \
vladvana 0:23d1f73bf130 513 _wRegVal ^= USB_EPTX_DTOG2; \
vladvana 0:23d1f73bf130 514 } \
vladvana 0:23d1f73bf130 515 PCD_SET_ENDPOINT((USBx), (bEpNum), _wRegVal | USB_EP_CTR_RX|USB_EP_CTR_TX); \
vladvana 0:23d1f73bf130 516 } /* PCD_SET_EP_TXRX_STATUS */
vladvana 0:23d1f73bf130 517
vladvana 0:23d1f73bf130 518 /**
vladvana 0:23d1f73bf130 519 * @brief gets the status for tx/rx transfer (bits STAT_TX[1:0]
vladvana 0:23d1f73bf130 520 * /STAT_RX[1:0])
vladvana 0:23d1f73bf130 521 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 522 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 523 * @retval status
vladvana 0:23d1f73bf130 524 */
vladvana 0:23d1f73bf130 525 #define PCD_GET_EP_TX_STATUS(USBx, bEpNum) ((uint16_t)PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPTX_STAT)
vladvana 0:23d1f73bf130 526 #define PCD_GET_EP_RX_STATUS(USBx, bEpNum) ((uint16_t)PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPRX_STAT)
vladvana 0:23d1f73bf130 527
vladvana 0:23d1f73bf130 528 /**
vladvana 0:23d1f73bf130 529 * @brief sets directly the VALID tx/rx-status into the endpoint register
vladvana 0:23d1f73bf130 530 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 531 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 532 * @retval None
vladvana 0:23d1f73bf130 533 */
vladvana 0:23d1f73bf130 534 #define PCD_SET_EP_TX_VALID(USBx, bEpNum) (PCD_SET_EP_TX_STATUS((USBx), (bEpNum), USB_EP_TX_VALID))
vladvana 0:23d1f73bf130 535 #define PCD_SET_EP_RX_VALID(USBx, bEpNum) (PCD_SET_EP_RX_STATUS((USBx), (bEpNum), USB_EP_RX_VALID))
vladvana 0:23d1f73bf130 536
vladvana 0:23d1f73bf130 537 /**
vladvana 0:23d1f73bf130 538 * @brief checks stall condition in an endpoint.
vladvana 0:23d1f73bf130 539 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 540 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 541 * @retval TRUE = endpoint in stall condition.
vladvana 0:23d1f73bf130 542 */
vladvana 0:23d1f73bf130 543 #define PCD_GET_EP_TX_STALL_STATUS(USBx, bEpNum) (PCD_GET_EP_TX_STATUS((USBx), (bEpNum)) \
vladvana 0:23d1f73bf130 544 == USB_EP_TX_STALL)
vladvana 0:23d1f73bf130 545 #define PCD_GET_EP_RX_STALL_STATUS(USBx, bEpNum) (PCD_GET_EP_RX_STATUS((USBx), (bEpNum)) \
vladvana 0:23d1f73bf130 546 == USB_EP_RX_STALL)
vladvana 0:23d1f73bf130 547
vladvana 0:23d1f73bf130 548 /**
vladvana 0:23d1f73bf130 549 * @brief set & clear EP_KIND bit.
vladvana 0:23d1f73bf130 550 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 551 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 552 * @retval None
vladvana 0:23d1f73bf130 553 */
vladvana 0:23d1f73bf130 554 #define PCD_SET_EP_KIND(USBx, bEpNum) (PCD_SET_ENDPOINT((USBx), (bEpNum), \
vladvana 0:23d1f73bf130 555 (USB_EP_CTR_RX|USB_EP_CTR_TX|((PCD_GET_ENDPOINT((USBx), (bEpNum)) | USB_EP_KIND) & USB_EPREG_MASK))))
vladvana 0:23d1f73bf130 556 #define PCD_CLEAR_EP_KIND(USBx, bEpNum) (PCD_SET_ENDPOINT((USBx), (bEpNum), \
vladvana 0:23d1f73bf130 557 (USB_EP_CTR_RX|USB_EP_CTR_TX|(PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPKIND_MASK))))
vladvana 0:23d1f73bf130 558
vladvana 0:23d1f73bf130 559 /**
vladvana 0:23d1f73bf130 560 * @brief Sets/clears directly STATUS_OUT bit in the endpoint register.
vladvana 0:23d1f73bf130 561 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 562 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 563 * @retval None
vladvana 0:23d1f73bf130 564 */
vladvana 0:23d1f73bf130 565 #define PCD_SET_OUT_STATUS(USBx, bEpNum) PCD_SET_EP_KIND((USBx), (bEpNum))
vladvana 0:23d1f73bf130 566 #define PCD_CLEAR_OUT_STATUS(USBx, bEpNum) PCD_CLEAR_EP_KIND((USBx), (bEpNum))
vladvana 0:23d1f73bf130 567
vladvana 0:23d1f73bf130 568 /**
vladvana 0:23d1f73bf130 569 * @brief Sets/clears directly EP_KIND bit in the endpoint register.
vladvana 0:23d1f73bf130 570 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 571 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 572 * @retval None
vladvana 0:23d1f73bf130 573 */
vladvana 0:23d1f73bf130 574 #define PCD_SET_EP_DBUF(USBx, bEpNum) PCD_SET_EP_KIND((USBx), (bEpNum))
vladvana 0:23d1f73bf130 575 #define PCD_CLEAR_EP_DBUF(USBx, bEpNum) PCD_CLEAR_EP_KIND((USBx), (bEpNum))
vladvana 0:23d1f73bf130 576
vladvana 0:23d1f73bf130 577 /**
vladvana 0:23d1f73bf130 578 * @brief Clears bit CTR_RX / CTR_TX in the endpoint register.
vladvana 0:23d1f73bf130 579 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 580 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 581 * @retval None
vladvana 0:23d1f73bf130 582 */
vladvana 0:23d1f73bf130 583 #define PCD_CLEAR_RX_EP_CTR(USBx, bEpNum) (PCD_SET_ENDPOINT((USBx), (bEpNum),\
vladvana 0:23d1f73bf130 584 PCD_GET_ENDPOINT((USBx), (bEpNum)) & 0x7FFF & USB_EPREG_MASK))
vladvana 0:23d1f73bf130 585 #define PCD_CLEAR_TX_EP_CTR(USBx, bEpNum) (PCD_SET_ENDPOINT((USBx), (bEpNum),\
vladvana 0:23d1f73bf130 586 PCD_GET_ENDPOINT((USBx), (bEpNum)) & 0xFF7F & USB_EPREG_MASK))
vladvana 0:23d1f73bf130 587
vladvana 0:23d1f73bf130 588 /**
vladvana 0:23d1f73bf130 589 * @brief Toggles DTOG_RX / DTOG_TX bit in the endpoint register.
vladvana 0:23d1f73bf130 590 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 591 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 592 * @retval None
vladvana 0:23d1f73bf130 593 */
vladvana 0:23d1f73bf130 594 #define PCD_RX_DTOG(USBx, bEpNum) (PCD_SET_ENDPOINT((USBx), (bEpNum), \
vladvana 0:23d1f73bf130 595 USB_EP_CTR_RX|USB_EP_CTR_TX|USB_EP_DTOG_RX | (PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK)))
vladvana 0:23d1f73bf130 596 #define PCD_TX_DTOG(USBx, bEpNum) (PCD_SET_ENDPOINT((USBx), (bEpNum), \
vladvana 0:23d1f73bf130 597 USB_EP_CTR_RX|USB_EP_CTR_TX|USB_EP_DTOG_TX | (PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK)))
vladvana 0:23d1f73bf130 598
vladvana 0:23d1f73bf130 599 /**
vladvana 0:23d1f73bf130 600 * @brief Clears DTOG_RX / DTOG_TX bit in the endpoint register.
vladvana 0:23d1f73bf130 601 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 602 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 603 * @retval None
vladvana 0:23d1f73bf130 604 */
vladvana 0:23d1f73bf130 605 #define PCD_CLEAR_RX_DTOG(USBx, bEpNum) if((PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EP_DTOG_RX) != 0)\
vladvana 0:23d1f73bf130 606 { \
vladvana 0:23d1f73bf130 607 PCD_RX_DTOG((USBx), (bEpNum)); \
vladvana 0:23d1f73bf130 608 }
vladvana 0:23d1f73bf130 609 #define PCD_CLEAR_TX_DTOG(USBx, bEpNum) if((PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EP_DTOG_TX) != 0)\
vladvana 0:23d1f73bf130 610 { \
vladvana 0:23d1f73bf130 611 PCD_TX_DTOG((USBx), (bEpNum)); \
vladvana 0:23d1f73bf130 612 }
vladvana 0:23d1f73bf130 613
vladvana 0:23d1f73bf130 614 /**
vladvana 0:23d1f73bf130 615 * @brief Sets address in an endpoint register.
vladvana 0:23d1f73bf130 616 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 617 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 618 * @param bAddr: Address.
vladvana 0:23d1f73bf130 619 * @retval None
vladvana 0:23d1f73bf130 620 */
vladvana 0:23d1f73bf130 621 #define PCD_SET_EP_ADDRESS(USBx, bEpNum,bAddr) PCD_SET_ENDPOINT((USBx), (bEpNum),\
vladvana 0:23d1f73bf130 622 USB_EP_CTR_RX|USB_EP_CTR_TX|(PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK) | (bAddr))
vladvana 0:23d1f73bf130 623
vladvana 0:23d1f73bf130 624 #define PCD_GET_EP_ADDRESS(USBx, bEpNum) ((uint8_t)(PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPADDR_FIELD))
vladvana 0:23d1f73bf130 625
vladvana 0:23d1f73bf130 626 #define PCD_EP_TX_ADDRESS(USBx, bEpNum) ((uint32_t *)(((USBx)->BTABLE+(bEpNum)*8)*2+ ((uint32_t)(USBx) + 0x400)))
vladvana 0:23d1f73bf130 627 #define PCD_EP_TX_CNT(USBx, bEpNum) ((uint32_t *)(((USBx)->BTABLE+(bEpNum)*8+2)*2+ ((uint32_t)(USBx) + 0x400)))
vladvana 0:23d1f73bf130 628 #define PCD_EP_RX_ADDRESS(USBx, bEpNum) ((uint32_t *)(((USBx)->BTABLE+(bEpNum)*8+4)*2+ ((uint32_t)(USBx) + 0x400)))
vladvana 0:23d1f73bf130 629 #define PCD_EP_RX_CNT(USBx, bEpNum) ((uint32_t *)(((USBx)->BTABLE+(bEpNum)*8+6)*2+ ((uint32_t)(USBx) + 0x400)))
vladvana 0:23d1f73bf130 630
vladvana 0:23d1f73bf130 631 #define PCD_SET_EP_RX_CNT(USBx, bEpNum,wCount) {\
vladvana 0:23d1f73bf130 632 uint32_t *pdwReg = PCD_EP_RX_CNT((USBx), (bEpNum)); \
vladvana 0:23d1f73bf130 633 PCD_SET_EP_CNT_RX_REG(pdwReg, (wCount));\
vladvana 0:23d1f73bf130 634 }
vladvana 0:23d1f73bf130 635
vladvana 0:23d1f73bf130 636 /**
vladvana 0:23d1f73bf130 637 * @brief sets address of the tx/rx buffer.
vladvana 0:23d1f73bf130 638 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 639 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 640 * @param wAddr: address to be set (must be word aligned).
vladvana 0:23d1f73bf130 641 * @retval None
vladvana 0:23d1f73bf130 642 */
vladvana 0:23d1f73bf130 643 #define PCD_SET_EP_TX_ADDRESS(USBx, bEpNum,wAddr) (*PCD_EP_TX_ADDRESS((USBx), (bEpNum)) = (((wAddr) >> 1) << 1))
vladvana 0:23d1f73bf130 644 #define PCD_SET_EP_RX_ADDRESS(USBx, bEpNum,wAddr) (*PCD_EP_RX_ADDRESS((USBx), (bEpNum)) = (((wAddr) >> 1) << 1))
vladvana 0:23d1f73bf130 645
vladvana 0:23d1f73bf130 646 /**
vladvana 0:23d1f73bf130 647 * @brief Gets address of the tx/rx buffer.
vladvana 0:23d1f73bf130 648 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 649 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 650 * @retval address of the buffer.
vladvana 0:23d1f73bf130 651 */
vladvana 0:23d1f73bf130 652 #define PCD_GET_EP_TX_ADDRESS(USBx, bEpNum) ((uint16_t)*PCD_EP_TX_ADDRESS((USBx), (bEpNum)))
vladvana 0:23d1f73bf130 653 #define PCD_GET_EP_RX_ADDRESS(USBx, bEpNum) ((uint16_t)*PCD_EP_RX_ADDRESS((USBx), (bEpNum)))
vladvana 0:23d1f73bf130 654
vladvana 0:23d1f73bf130 655 /**
vladvana 0:23d1f73bf130 656 * @brief Sets counter of rx buffer with no. of blocks.
vladvana 0:23d1f73bf130 657 * @param dwReg: Register
vladvana 0:23d1f73bf130 658 * @param wCount: Counter.
vladvana 0:23d1f73bf130 659 * @param wNBlocks: no. of Blocks.
vladvana 0:23d1f73bf130 660 * @retval None
vladvana 0:23d1f73bf130 661 */
vladvana 0:23d1f73bf130 662 #define PCD_CALC_BLK32(dwReg,wCount,wNBlocks) {\
vladvana 0:23d1f73bf130 663 (wNBlocks) = (wCount) >> 5;\
vladvana 0:23d1f73bf130 664 if(((wCount) & 0x1f) == 0)\
vladvana 0:23d1f73bf130 665 { \
vladvana 0:23d1f73bf130 666 (wNBlocks)--;\
vladvana 0:23d1f73bf130 667 } \
vladvana 0:23d1f73bf130 668 *pdwReg = (uint16_t)((uint16_t)((wNBlocks) << 10) | 0x8000); \
vladvana 0:23d1f73bf130 669 }/* PCD_CALC_BLK32 */
vladvana 0:23d1f73bf130 670
vladvana 0:23d1f73bf130 671 #define PCD_CALC_BLK2(dwReg,wCount,wNBlocks) {\
vladvana 0:23d1f73bf130 672 (wNBlocks) = (wCount) >> 1;\
vladvana 0:23d1f73bf130 673 if(((wCount) & 0x1) != 0)\
vladvana 0:23d1f73bf130 674 { \
vladvana 0:23d1f73bf130 675 (wNBlocks)++;\
vladvana 0:23d1f73bf130 676 } \
vladvana 0:23d1f73bf130 677 *pdwReg = (uint16_t)((wNBlocks) << 10);\
vladvana 0:23d1f73bf130 678 }/* PCD_CALC_BLK2 */
vladvana 0:23d1f73bf130 679
vladvana 0:23d1f73bf130 680 #define PCD_SET_EP_CNT_RX_REG(dwReg,wCount) {\
vladvana 0:23d1f73bf130 681 uint16_t wNBlocks;\
vladvana 0:23d1f73bf130 682 if((wCount) > 62) \
vladvana 0:23d1f73bf130 683 { \
vladvana 0:23d1f73bf130 684 PCD_CALC_BLK32((dwReg),(wCount),wNBlocks); \
vladvana 0:23d1f73bf130 685 } \
vladvana 0:23d1f73bf130 686 else \
vladvana 0:23d1f73bf130 687 { \
vladvana 0:23d1f73bf130 688 PCD_CALC_BLK2((dwReg),(wCount),wNBlocks); \
vladvana 0:23d1f73bf130 689 } \
vladvana 0:23d1f73bf130 690 }/* PCD_SET_EP_CNT_RX_REG */
vladvana 0:23d1f73bf130 691
vladvana 0:23d1f73bf130 692 #define PCD_SET_EP_RX_DBUF0_CNT(USBx, bEpNum,wCount) {\
vladvana 0:23d1f73bf130 693 uint16_t *pdwReg = PCD_EP_TX_CNT((USBx), (bEpNum)); \
vladvana 0:23d1f73bf130 694 PCD_SET_EP_CNT_RX_REG(pdwReg, (wCount));\
vladvana 0:23d1f73bf130 695 }
vladvana 0:23d1f73bf130 696
vladvana 0:23d1f73bf130 697 /**
vladvana 0:23d1f73bf130 698 * @brief sets counter for the tx/rx buffer.
vladvana 0:23d1f73bf130 699 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 700 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 701 * @param wCount: Counter value.
vladvana 0:23d1f73bf130 702 * @retval None
vladvana 0:23d1f73bf130 703 */
vladvana 0:23d1f73bf130 704 #define PCD_SET_EP_TX_CNT(USBx, bEpNum,wCount) (*PCD_EP_TX_CNT((USBx), (bEpNum)) = (wCount))
vladvana 0:23d1f73bf130 705
vladvana 0:23d1f73bf130 706
vladvana 0:23d1f73bf130 707 /**
vladvana 0:23d1f73bf130 708 * @brief gets counter of the tx buffer.
vladvana 0:23d1f73bf130 709 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 710 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 711 * @retval Counter value
vladvana 0:23d1f73bf130 712 */
vladvana 0:23d1f73bf130 713 #define PCD_GET_EP_TX_CNT(USBx, bEpNum) ((uint16_t)(*PCD_EP_TX_CNT((USBx), (bEpNum))) & 0x3ff)
vladvana 0:23d1f73bf130 714 #define PCD_GET_EP_RX_CNT(USBx, bEpNum) ((uint16_t)(*PCD_EP_RX_CNT((USBx), (bEpNum))) & 0x3ff)
vladvana 0:23d1f73bf130 715
vladvana 0:23d1f73bf130 716 /**
vladvana 0:23d1f73bf130 717 * @brief Sets buffer 0/1 address in a double buffer endpoint.
vladvana 0:23d1f73bf130 718 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 719 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 720 * @param wBuf0Addr: buffer 0 address.
vladvana 0:23d1f73bf130 721 * @retval Counter value
vladvana 0:23d1f73bf130 722 */
vladvana 0:23d1f73bf130 723 #define PCD_SET_EP_DBUF0_ADDR(USBx, bEpNum,wBuf0Addr) {PCD_SET_EP_TX_ADDRESS((USBx), (bEpNum), (wBuf0Addr));}
vladvana 0:23d1f73bf130 724 #define PCD_SET_EP_DBUF1_ADDR(USBx, bEpNum,wBuf1Addr) {PCD_SET_EP_RX_ADDRESS((USBx), (bEpNum), (wBuf1Addr));}
vladvana 0:23d1f73bf130 725
vladvana 0:23d1f73bf130 726 /**
vladvana 0:23d1f73bf130 727 * @brief Sets addresses in a double buffer endpoint.
vladvana 0:23d1f73bf130 728 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 729 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 730 * @param wBuf0Addr: buffer 0 address.
vladvana 0:23d1f73bf130 731 * @param wBuf1Addr = buffer 1 address.
vladvana 0:23d1f73bf130 732 * @retval None
vladvana 0:23d1f73bf130 733 */
vladvana 0:23d1f73bf130 734 #define PCD_SET_EP_DBUF_ADDR(USBx, bEpNum,wBuf0Addr,wBuf1Addr) { \
vladvana 0:23d1f73bf130 735 PCD_SET_EP_DBUF0_ADDR((USBx), (bEpNum), (wBuf0Addr));\
vladvana 0:23d1f73bf130 736 PCD_SET_EP_DBUF1_ADDR((USBx), (bEpNum), (wBuf1Addr));\
vladvana 0:23d1f73bf130 737 } /* PCD_SET_EP_DBUF_ADDR */
vladvana 0:23d1f73bf130 738
vladvana 0:23d1f73bf130 739 /**
vladvana 0:23d1f73bf130 740 * @brief Gets buffer 0/1 address of a double buffer endpoint.
vladvana 0:23d1f73bf130 741 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 742 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 743 * @retval None
vladvana 0:23d1f73bf130 744 */
vladvana 0:23d1f73bf130 745 #define PCD_GET_EP_DBUF0_ADDR(USBx, bEpNum) (PCD_GET_EP_TX_ADDRESS((USBx), (bEpNum)))
vladvana 0:23d1f73bf130 746 #define PCD_GET_EP_DBUF1_ADDR(USBx, bEpNum) (PCD_GET_EP_RX_ADDRESS((USBx), (bEpNum)))
vladvana 0:23d1f73bf130 747
vladvana 0:23d1f73bf130 748 /**
vladvana 0:23d1f73bf130 749 * @brief Gets buffer 0/1 address of a double buffer endpoint.
vladvana 0:23d1f73bf130 750 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 751 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 752 * @param bDir: endpoint dir EP_DBUF_OUT = OUT
vladvana 0:23d1f73bf130 753 * EP_DBUF_IN = IN
vladvana 0:23d1f73bf130 754 * @param wCount: Counter value
vladvana 0:23d1f73bf130 755 * @retval None
vladvana 0:23d1f73bf130 756 */
vladvana 0:23d1f73bf130 757 #define PCD_SET_EP_DBUF0_CNT(USBx, bEpNum, bDir, wCount) { \
vladvana 0:23d1f73bf130 758 if((bDir) == PCD_EP_DBUF_OUT)\
vladvana 0:23d1f73bf130 759 /* OUT endpoint */ \
vladvana 0:23d1f73bf130 760 {PCD_SET_EP_RX_DBUF0_CNT((USBx), (bEpNum),(wCount));} \
vladvana 0:23d1f73bf130 761 else if((bDir) == PCD_EP_DBUF_IN)\
vladvana 0:23d1f73bf130 762 /* IN endpoint */ \
vladvana 0:23d1f73bf130 763 *PCD_EP_TX_CNT((USBx), (bEpNum)) = (uint32_t)(wCount); \
vladvana 0:23d1f73bf130 764 } /* SetEPDblBuf0Count*/
vladvana 0:23d1f73bf130 765
vladvana 0:23d1f73bf130 766 #define PCD_SET_EP_DBUF1_CNT(USBx, bEpNum, bDir, wCount) { \
vladvana 0:23d1f73bf130 767 if((bDir) == PCD_EP_DBUF_OUT)\
vladvana 0:23d1f73bf130 768 {/* OUT endpoint */ \
vladvana 0:23d1f73bf130 769 PCD_SET_EP_RX_CNT((USBx), (bEpNum),(wCount)); \
vladvana 0:23d1f73bf130 770 } \
vladvana 0:23d1f73bf130 771 else if((bDir) == PCD_EP_DBUF_IN)\
vladvana 0:23d1f73bf130 772 {/* IN endpoint */ \
vladvana 0:23d1f73bf130 773 *PCD_EP_RX_CNT((USBx), (bEpNum)) = (uint32_t)(wCount); \
vladvana 0:23d1f73bf130 774 } \
vladvana 0:23d1f73bf130 775 } /* SetEPDblBuf1Count */
vladvana 0:23d1f73bf130 776
vladvana 0:23d1f73bf130 777 #define PCD_SET_EP_DBUF_CNT(USBx, bEpNum, bDir, wCount) {\
vladvana 0:23d1f73bf130 778 PCD_SET_EP_DBUF0_CNT((USBx), (bEpNum), (bDir), (wCount)); \
vladvana 0:23d1f73bf130 779 PCD_SET_EP_DBUF1_CNT((USBx), (bEpNum), (bDir), (wCount)); \
vladvana 0:23d1f73bf130 780 } /* PCD_SET_EP_DBUF_CNT */
vladvana 0:23d1f73bf130 781
vladvana 0:23d1f73bf130 782 /**
vladvana 0:23d1f73bf130 783 * @brief Gets buffer 0/1 rx/tx counter for double buffering.
vladvana 0:23d1f73bf130 784 * @param USBx: USB peripheral instance register address.
vladvana 0:23d1f73bf130 785 * @param bEpNum: Endpoint Number.
vladvana 0:23d1f73bf130 786 * @retval None
vladvana 0:23d1f73bf130 787 */
vladvana 0:23d1f73bf130 788 #define PCD_GET_EP_DBUF0_CNT(USBx, bEpNum) (PCD_GET_EP_TX_CNT((USBx), (bEpNum)))
vladvana 0:23d1f73bf130 789 #define PCD_GET_EP_DBUF1_CNT(USBx, bEpNum) (PCD_GET_EP_RX_CNT((USBx), (bEpNum)))
vladvana 0:23d1f73bf130 790
vladvana 0:23d1f73bf130 791 #endif /* USB */
vladvana 0:23d1f73bf130 792
vladvana 0:23d1f73bf130 793 /** @defgroup PCD_Instance_definition PCD Instance definition
vladvana 0:23d1f73bf130 794 * @{
vladvana 0:23d1f73bf130 795 */
vladvana 0:23d1f73bf130 796 #define IS_PCD_ALL_INSTANCE IS_USB_ALL_INSTANCE
vladvana 0:23d1f73bf130 797 /**
vladvana 0:23d1f73bf130 798 * @}
vladvana 0:23d1f73bf130 799 */
vladvana 0:23d1f73bf130 800
vladvana 0:23d1f73bf130 801 /**
vladvana 0:23d1f73bf130 802 * @}
vladvana 0:23d1f73bf130 803 */
vladvana 0:23d1f73bf130 804
vladvana 0:23d1f73bf130 805 /**
vladvana 0:23d1f73bf130 806 * @}
vladvana 0:23d1f73bf130 807 */
vladvana 0:23d1f73bf130 808
vladvana 0:23d1f73bf130 809 /**
vladvana 0:23d1f73bf130 810 * @}
vladvana 0:23d1f73bf130 811 */
vladvana 0:23d1f73bf130 812
vladvana 0:23d1f73bf130 813 #endif /* STM32F102x6 || STM32F102xB || */
vladvana 0:23d1f73bf130 814 /* STM32F103x6 || STM32F103xB || */
vladvana 0:23d1f73bf130 815 /* STM32F103xE || STM32F103xG || */
vladvana 0:23d1f73bf130 816 /* STM32F105xC || STM32F107xC */
vladvana 0:23d1f73bf130 817
vladvana 0:23d1f73bf130 818 #ifdef __cplusplus
vladvana 0:23d1f73bf130 819 }
vladvana 0:23d1f73bf130 820 #endif
vladvana 0:23d1f73bf130 821
vladvana 0:23d1f73bf130 822
vladvana 0:23d1f73bf130 823 #endif /* __STM32F1xx_HAL_PCD_H */
vladvana 0:23d1f73bf130 824
vladvana 0:23d1f73bf130 825 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/