Subversion Repositories DashDisplay

Rev

Rev 56 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 56 Rev 61
Line 185... Line 185...
185
  */
185
  */
186
 
186
 
187
 
187
 
188
#define __HAL_PCD_ENABLE(__HANDLE__)                                  (void)USB_EnableGlobalInt ((__HANDLE__)->Instance)
188
#define __HAL_PCD_ENABLE(__HANDLE__)                                  (void)USB_EnableGlobalInt ((__HANDLE__)->Instance)
189
#define __HAL_PCD_DISABLE(__HANDLE__)                                 (void)USB_DisableGlobalInt ((__HANDLE__)->Instance)
189
#define __HAL_PCD_DISABLE(__HANDLE__)                                 (void)USB_DisableGlobalInt ((__HANDLE__)->Instance)
190
#define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__)                 ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__))
190
#define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__)                 ((USB_ReadInterrupts((__HANDLE__)->Instance)\
-
 
191
                                                                        & (__INTERRUPT__)) == (__INTERRUPT__))
-
 
192
 
191
#define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__)               (((__HANDLE__)->Instance->ISTR) &= (uint16_t)(~(__INTERRUPT__)))
193
#define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__)               (((__HANDLE__)->Instance->ISTR)\
-
 
194
                                                                       &= (uint16_t)(~(__INTERRUPT__)))
192
 
195
 
193
#define __HAL_USB_WAKEUP_EXTI_ENABLE_IT()                             EXTI->IMR |= USB_WAKEUP_EXTI_LINE
196
#define __HAL_USB_WAKEUP_EXTI_ENABLE_IT()                             EXTI->IMR |= USB_WAKEUP_EXTI_LINE
194
#define __HAL_USB_WAKEUP_EXTI_DISABLE_IT()                            EXTI->IMR &= ~(USB_WAKEUP_EXTI_LINE)
197
#define __HAL_USB_WAKEUP_EXTI_DISABLE_IT()                            EXTI->IMR &= ~(USB_WAKEUP_EXTI_LINE)
195
#define __HAL_USB_WAKEUP_EXTI_GET_FLAG()                              EXTI->PR & (USB_WAKEUP_EXTI_LINE)
198
#define __HAL_USB_WAKEUP_EXTI_GET_FLAG()                              EXTI->PR & (USB_WAKEUP_EXTI_LINE)
196
#define __HAL_USB_WAKEUP_EXTI_CLEAR_FLAG()                            EXTI->PR = USB_WAKEUP_EXTI_LINE
199
#define __HAL_USB_WAKEUP_EXTI_CLEAR_FLAG()                            EXTI->PR = USB_WAKEUP_EXTI_LINE
Line 257... Line 260...
257
 
260
 
258
/**
261
/**
259
  * @}
262
  * @}
260
  */
263
  */
261
 
264
 
262
HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef CallbackID, pPCD_CallbackTypeDef pCallback);
265
HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd,
-
 
266
                                           HAL_PCD_CallbackIDTypeDef CallbackID,
-
 
267
                                           pPCD_CallbackTypeDef pCallback);
-
 
268
 
263
HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef CallbackID);
269
HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd,
-
 
270
                                             HAL_PCD_CallbackIDTypeDef CallbackID);
-
 
271
 
-
 
272
HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd,
-
 
273
                                                       pPCD_DataOutStageCallbackTypeDef pCallback);
264
 
274
 
265
HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd, pPCD_DataOutStageCallbackTypeDef pCallback);
-
 
266
HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd);
275
HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd);
267
 
276
 
268
HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback(PCD_HandleTypeDef *hpcd, pPCD_DataInStageCallbackTypeDef pCallback);
277
HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback(PCD_HandleTypeDef *hpcd,
-
 
278
                                                      pPCD_DataInStageCallbackTypeDef pCallback);
-
 
279
 
269
HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback(PCD_HandleTypeDef *hpcd);
280
HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback(PCD_HandleTypeDef *hpcd);
270
 
281
 
271
HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd, pPCD_IsoOutIncpltCallbackTypeDef pCallback);
282
HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd,
-
 
283
                                                       pPCD_IsoOutIncpltCallbackTypeDef pCallback);
-
 
284
 
272
HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd);
285
HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd);
273
 
286
 
274
HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd, pPCD_IsoInIncpltCallbackTypeDef pCallback);
287
HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd,
-
 
288
                                                      pPCD_IsoInIncpltCallbackTypeDef pCallback);
-
 
289
 
275
HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd);
290
HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd);
276
 
291
 
277
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
292
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
278
/**
293
/**
279
  * @}
294
  * @}
Line 310... Line 325...
310
  * @{
325
  * @{
311
  */
326
  */
312
HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd);
327
HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd);
313
HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd);
328
HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd);
314
HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address);
329
HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address);
315
HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint16_t ep_mps, uint8_t ep_type);
330
HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr,
-
 
331
                                  uint16_t ep_mps, uint8_t ep_type);
-
 
332
 
316
HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
333
HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
317
HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len);
334
HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr,
-
 
335
                                     uint8_t *pBuf, uint32_t len);
-
 
336
 
318
HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len);
337
HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr,
319
uint32_t          HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
338
                                      uint8_t *pBuf, uint32_t len);
-
 
339
 
-
 
340
 
320
HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
341
HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
321
HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
342
HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
322
HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
343
HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
323
HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd);
344
HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd);
324
HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd);
345
HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd);
-
 
346
 
-
 
347
uint32_t          HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
325
/**
348
/**
326
  * @}
349
  * @}
327
  */
350
  */
328
 
351
 
329
/* Peripheral State functions  ************************************************/
352
/* Peripheral State functions  ************************************************/
Line 402... Line 425...
402
/********************  Bit definition for USB_COUNTn_RX register  *************/
425
/********************  Bit definition for USB_COUNTn_RX register  *************/
403
#define USB_CNTRX_NBLK_MSK                    (0x1FU << 10)
426
#define USB_CNTRX_NBLK_MSK                    (0x1FU << 10)
404
#define USB_CNTRX_BLSIZE                      (0x1U << 15)
427
#define USB_CNTRX_BLSIZE                      (0x1U << 15)
405
 
428
 
406
/* SetENDPOINT */
429
/* SetENDPOINT */
-
 
430
#define PCD_SET_ENDPOINT(USBx, bEpNum, wRegValue)  (*(__IO uint16_t *)\
407
#define PCD_SET_ENDPOINT(USBx, bEpNum, wRegValue)  (*(__IO uint16_t *)(&(USBx)->EP0R + ((bEpNum) * 2U)) = (uint16_t)(wRegValue))
431
                                                    (&(USBx)->EP0R + ((bEpNum) * 2U)) = (uint16_t)(wRegValue))
408
 
432
 
409
/* GetENDPOINT */
433
/* GetENDPOINT */
410
#define PCD_GET_ENDPOINT(USBx, bEpNum)            (*(__IO uint16_t *)(&(USBx)->EP0R + ((bEpNum) * 2U)))
434
#define PCD_GET_ENDPOINT(USBx, bEpNum)             (*(__IO uint16_t *)(&(USBx)->EP0R + ((bEpNum) * 2U)))
411
 
435
 
412
/* ENDPOINT transfer */
436
/* ENDPOINT transfer */
413
#define USB_EP0StartXfer                          USB_EPStartXfer
437
#define USB_EP0StartXfer                           USB_EPStartXfer
414
 
438
 
415
/**
439
/**
416
  * @brief  sets the type in the endpoint register(bits EP_TYPE[1:0])
440
  * @brief  sets the type in the endpoint register(bits EP_TYPE[1:0])
417
  * @param  USBx USB peripheral instance register address.
441
  * @param  USBx USB peripheral instance register address.
418
  * @param  bEpNum Endpoint Number.
442
  * @param  bEpNum Endpoint Number.
419
  * @param  wType Endpoint Type.
443
  * @param  wType Endpoint Type.
420
  * @retval None
444
  * @retval None
421
  */
445
  */
422
#define PCD_SET_EPTYPE(USBx, bEpNum, wType) (PCD_SET_ENDPOINT((USBx), (bEpNum), \
446
#define PCD_SET_EPTYPE(USBx, bEpNum, wType) (PCD_SET_ENDPOINT((USBx), (bEpNum), ((PCD_GET_ENDPOINT((USBx), (bEpNum))\
423
                                             ((PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EP_T_MASK) | (wType) | USB_EP_CTR_TX | USB_EP_CTR_RX)))
447
                                                              & USB_EP_T_MASK) | (wType) | USB_EP_CTR_TX | USB_EP_CTR_RX)))
-
 
448
 
424
 
449
 
425
/**
450
/**
426
  * @brief  gets the type in the endpoint register(bits EP_TYPE[1:0])
451
  * @brief  gets the type in the endpoint register(bits EP_TYPE[1:0])
427
  * @param  USBx USB peripheral instance register address.
452
  * @param  USBx USB peripheral instance register address.
428
  * @param  bEpNum Endpoint Number.
453
  * @param  bEpNum Endpoint Number.
Line 435... Line 460...
435
  *         toggles bit SW_BUF in the double buffered endpoint register
460
  *         toggles bit SW_BUF in the double buffered endpoint register
436
  * @param USBx USB device.
461
  * @param USBx USB device.
437
  * @param   bEpNum, bDir
462
  * @param   bEpNum, bDir
438
  * @retval None
463
  * @retval None
439
  */
464
  */
440
#define PCD_FreeUserBuffer(USBx, bEpNum, bDir) do { \
465
#define PCD_FreeUserBuffer(USBx, bEpNum, bDir) \
-
 
466
  do { \
441
  if ((bDir) == 0U) \
467
    if ((bDir) == 0U) \
442
  { \
468
    { \
443
    /* OUT double buffered endpoint */ \
469
      /* OUT double buffered endpoint */ \
444
    PCD_TX_DTOG((USBx), (bEpNum)); \
470
      PCD_TX_DTOG((USBx), (bEpNum)); \
445
  } \
471
    } \
446
  else if ((bDir) == 1U) \
472
    else if ((bDir) == 1U) \
447
  { \
473
    { \
448
    /* IN double buffered endpoint */ \
474
      /* IN double buffered endpoint */ \
449
    PCD_RX_DTOG((USBx), (bEpNum)); \
475
      PCD_RX_DTOG((USBx), (bEpNum)); \
450
  } \
476
    } \
451
} while(0)
477
  } while(0)
452
 
478
 
453
/**
479
/**
454
  * @brief  sets the status for tx transfer (bits STAT_TX[1:0]).
480
  * @brief  sets the status for tx transfer (bits STAT_TX[1:0]).
455
  * @param  USBx USB peripheral instance register address.
481
  * @param  USBx USB peripheral instance register address.
456
  * @param  bEpNum Endpoint Number.
482
  * @param  bEpNum Endpoint Number.
457
  * @param  wState new state
483
  * @param  wState new state
458
  * @retval None
484
  * @retval None
459
  */
485
  */
460
#define PCD_SET_EP_TX_STATUS(USBx, bEpNum, wState) do { \
486
#define PCD_SET_EP_TX_STATUS(USBx, bEpNum, wState) \
-
 
487
  do { \
461
   uint16_t _wRegVal; \
488
    uint16_t _wRegVal; \
462
   \
489
    \
463
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPTX_DTOGMASK; \
490
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPTX_DTOGMASK; \
464
   /* toggle first bit ? */ \
491
    /* toggle first bit ? */ \
465
   if ((USB_EPTX_DTOG1 & (wState))!= 0U) \
492
    if ((USB_EPTX_DTOG1 & (wState))!= 0U) \
466
   { \
493
    { \
467
      _wRegVal ^= USB_EPTX_DTOG1; \
494
      _wRegVal ^= USB_EPTX_DTOG1; \
468
   } \
495
    } \
469
   /* toggle second bit ?  */ \
496
    /* toggle second bit ?  */ \
470
   if ((USB_EPTX_DTOG2 & (wState))!= 0U) \
497
    if ((USB_EPTX_DTOG2 & (wState))!= 0U) \
471
   { \
498
    { \
472
      _wRegVal ^= USB_EPTX_DTOG2; \
499
      _wRegVal ^= USB_EPTX_DTOG2; \
473
   } \
500
    } \
474
   PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \
501
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \
475
  } while(0) /* PCD_SET_EP_TX_STATUS */
502
  } while(0) /* PCD_SET_EP_TX_STATUS */
476
 
503
 
477
/**
504
/**
478
  * @brief  sets the status for rx transfer (bits STAT_TX[1:0])
505
  * @brief  sets the status for rx transfer (bits STAT_TX[1:0])
479
  * @param  USBx USB peripheral instance register address.
506
  * @param  USBx USB peripheral instance register address.
480
  * @param  bEpNum Endpoint Number.
507
  * @param  bEpNum Endpoint Number.
481
  * @param  wState new state
508
  * @param  wState new state
482
  * @retval None
509
  * @retval None
483
  */
510
  */
484
#define PCD_SET_EP_RX_STATUS(USBx, bEpNum,wState) do { \
511
#define PCD_SET_EP_RX_STATUS(USBx, bEpNum,wState) \
-
 
512
  do { \
485
    uint16_t _wRegVal; \
513
    uint16_t _wRegVal; \
486
    \
514
    \
487
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPRX_DTOGMASK; \
515
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPRX_DTOGMASK; \
488
    /* toggle first bit ? */ \
516
    /* toggle first bit ? */ \
489
    if ((USB_EPRX_DTOG1 & (wState))!= 0U) \
517
    if ((USB_EPRX_DTOG1 & (wState))!= 0U) \
490
    { \
518
    { \
491
       _wRegVal ^= USB_EPRX_DTOG1; \
519
      _wRegVal ^= USB_EPRX_DTOG1; \
492
    } \
520
    } \
493
    /* toggle second bit ? */ \
521
    /* toggle second bit ? */ \
494
    if ((USB_EPRX_DTOG2 & (wState))!= 0U) \
522
    if ((USB_EPRX_DTOG2 & (wState))!= 0U) \
495
    { \
523
    { \
496
       _wRegVal ^= USB_EPRX_DTOG2; \
524
      _wRegVal ^= USB_EPRX_DTOG2; \
497
    } \
525
    } \
498
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \
526
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \
499
  } while(0) /* PCD_SET_EP_RX_STATUS */
527
  } while(0) /* PCD_SET_EP_RX_STATUS */
500
 
528
 
501
/**
529
/**
Line 504... Line 532...
504
  * @param  bEpNum Endpoint Number.
532
  * @param  bEpNum Endpoint Number.
505
  * @param  wStaterx new state.
533
  * @param  wStaterx new state.
506
  * @param  wStatetx new state.
534
  * @param  wStatetx new state.
507
  * @retval None
535
  * @retval None
508
  */
536
  */
509
#define PCD_SET_EP_TXRX_STATUS(USBx, bEpNum, wStaterx, wStatetx) do { \
537
#define PCD_SET_EP_TXRX_STATUS(USBx, bEpNum, wStaterx, wStatetx) \
-
 
538
  do { \
510
    uint16_t _wRegVal; \
539
    uint16_t _wRegVal; \
511
    \
540
    \
512
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & (USB_EPRX_DTOGMASK | USB_EPTX_STAT); \
541
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & (USB_EPRX_DTOGMASK | USB_EPTX_STAT); \
513
    /* toggle first bit ? */ \
542
    /* toggle first bit ? */ \
514
    if ((USB_EPRX_DTOG1 & (wStaterx))!= 0U) \
543
    if ((USB_EPRX_DTOG1 & (wStaterx))!= 0U) \
Line 566... Line 595...
566
  * @brief  set & clear EP_KIND bit.
595
  * @brief  set & clear EP_KIND bit.
567
  * @param  USBx USB peripheral instance register address.
596
  * @param  USBx USB peripheral instance register address.
568
  * @param  bEpNum Endpoint Number.
597
  * @param  bEpNum Endpoint Number.
569
  * @retval None
598
  * @retval None
570
  */
599
  */
571
#define PCD_SET_EP_KIND(USBx, bEpNum) do { \
600
#define PCD_SET_EP_KIND(USBx, bEpNum) \
-
 
601
  do { \
572
    uint16_t _wRegVal; \
602
    uint16_t _wRegVal; \
573
    \
603
    \
574
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK; \
604
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK; \
575
    \
605
    \
576
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX | USB_EP_KIND)); \
606
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX | USB_EP_KIND)); \
577
  } while(0) /* PCD_SET_EP_KIND */
607
  } while(0) /* PCD_SET_EP_KIND */
578
 
608
 
579
#define PCD_CLEAR_EP_KIND(USBx, bEpNum) do { \
609
#define PCD_CLEAR_EP_KIND(USBx, bEpNum) \
-
 
610
  do { \
580
    uint16_t _wRegVal; \
611
    uint16_t _wRegVal; \
581
    \
612
    \
582
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPKIND_MASK; \
613
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPKIND_MASK; \
583
    \
614
    \
584
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \
615
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \
Line 606... Line 637...
606
  * @brief  Clears bit CTR_RX / CTR_TX in the endpoint register.
637
  * @brief  Clears bit CTR_RX / CTR_TX in the endpoint register.
607
  * @param  USBx USB peripheral instance register address.
638
  * @param  USBx USB peripheral instance register address.
608
  * @param  bEpNum Endpoint Number.
639
  * @param  bEpNum Endpoint Number.
609
  * @retval None
640
  * @retval None
610
  */
641
  */
611
#define PCD_CLEAR_RX_EP_CTR(USBx, bEpNum) do { \
642
#define PCD_CLEAR_RX_EP_CTR(USBx, bEpNum) \
-
 
643
  do { \
612
    uint16_t _wRegVal; \
644
    uint16_t _wRegVal; \
613
    \
645
    \
614
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & (0x7FFFU & USB_EPREG_MASK); \
646
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & (0x7FFFU & USB_EPREG_MASK); \
615
    \
647
    \
616
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_TX)); \
648
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_TX)); \
617
  } while(0) /* PCD_CLEAR_RX_EP_CTR */
649
  } while(0) /* PCD_CLEAR_RX_EP_CTR */
618
 
650
 
619
#define PCD_CLEAR_TX_EP_CTR(USBx, bEpNum) do { \
651
#define PCD_CLEAR_TX_EP_CTR(USBx, bEpNum) \
-
 
652
  do { \
620
    uint16_t _wRegVal; \
653
    uint16_t _wRegVal; \
621
    \
654
    \
622
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & (0xFF7FU & USB_EPREG_MASK); \
655
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & (0xFF7FU & USB_EPREG_MASK); \
623
    \
656
    \
624
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX)); \
657
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX)); \
Line 628... Line 661...
628
  * @brief  Toggles DTOG_RX / DTOG_TX bit in the endpoint register.
661
  * @brief  Toggles DTOG_RX / DTOG_TX bit in the endpoint register.
629
  * @param  USBx USB peripheral instance register address.
662
  * @param  USBx USB peripheral instance register address.
630
  * @param  bEpNum Endpoint Number.
663
  * @param  bEpNum Endpoint Number.
631
  * @retval None
664
  * @retval None
632
  */
665
  */
633
#define PCD_RX_DTOG(USBx, bEpNum) do { \
666
#define PCD_RX_DTOG(USBx, bEpNum) \
-
 
667
  do { \
634
    uint16_t _wEPVal; \
668
    uint16_t _wEPVal; \
635
    \
669
    \
636
    _wEPVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK; \
670
    _wEPVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK; \
637
    \
671
    \
638
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wEPVal | USB_EP_CTR_RX | USB_EP_CTR_TX | USB_EP_DTOG_RX)); \
672
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wEPVal | USB_EP_CTR_RX | USB_EP_CTR_TX | USB_EP_DTOG_RX)); \
639
  } while(0) /* PCD_RX_DTOG */
673
  } while(0) /* PCD_RX_DTOG */
640
 
674
 
641
#define PCD_TX_DTOG(USBx, bEpNum) do { \
675
#define PCD_TX_DTOG(USBx, bEpNum) \
-
 
676
  do { \
642
    uint16_t _wEPVal; \
677
    uint16_t _wEPVal; \
643
    \
678
    \
644
    _wEPVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK; \
679
    _wEPVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK; \
645
    \
680
    \
646
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wEPVal | USB_EP_CTR_RX | USB_EP_CTR_TX | USB_EP_DTOG_TX)); \
681
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wEPVal | USB_EP_CTR_RX | USB_EP_CTR_TX | USB_EP_DTOG_TX)); \
Line 649... Line 684...
649
  * @brief  Clears DTOG_RX / DTOG_TX bit in the endpoint register.
684
  * @brief  Clears DTOG_RX / DTOG_TX bit in the endpoint register.
650
  * @param  USBx USB peripheral instance register address.
685
  * @param  USBx USB peripheral instance register address.
651
  * @param  bEpNum Endpoint Number.
686
  * @param  bEpNum Endpoint Number.
652
  * @retval None
687
  * @retval None
653
  */
688
  */
654
#define PCD_CLEAR_RX_DTOG(USBx, bEpNum) do { \
689
#define PCD_CLEAR_RX_DTOG(USBx, bEpNum) \
-
 
690
  do { \
655
    uint16_t _wRegVal; \
691
    uint16_t _wRegVal; \
656
    \
692
    \
657
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)); \
693
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)); \
658
    \
694
    \
659
    if ((_wRegVal & USB_EP_DTOG_RX) != 0U)\
695
    if ((_wRegVal & USB_EP_DTOG_RX) != 0U)\
660
    { \
696
    { \
661
      PCD_RX_DTOG((USBx), (bEpNum)); \
697
      PCD_RX_DTOG((USBx), (bEpNum)); \
662
    } \
698
    } \
663
  } while(0) /* PCD_CLEAR_RX_DTOG */
699
  } while(0) /* PCD_CLEAR_RX_DTOG */
664
 
700
 
665
#define PCD_CLEAR_TX_DTOG(USBx, bEpNum) do { \
701
#define PCD_CLEAR_TX_DTOG(USBx, bEpNum) \
-
 
702
  do { \
666
    uint16_t _wRegVal; \
703
    uint16_t _wRegVal; \
667
    \
704
    \
668
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)); \
705
    _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)); \
669
    \
706
    \
670
    if ((_wRegVal & USB_EP_DTOG_TX) != 0U)\
707
    if ((_wRegVal & USB_EP_DTOG_TX) != 0U)\
Line 678... Line 715...
678
  * @param  USBx USB peripheral instance register address.
715
  * @param  USBx USB peripheral instance register address.
679
  * @param  bEpNum Endpoint Number.
716
  * @param  bEpNum Endpoint Number.
680
  * @param  bAddr Address.
717
  * @param  bAddr Address.
681
  * @retval None
718
  * @retval None
682
  */
719
  */
683
#define PCD_SET_EP_ADDRESS(USBx, bEpNum, bAddr) do { \
720
#define PCD_SET_EP_ADDRESS(USBx, bEpNum, bAddr) \
-
 
721
  do { \
684
    uint16_t _wRegVal; \
722
    uint16_t _wRegVal; \
685
    \
723
    \
686
    _wRegVal = (PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK) | (bAddr); \
724
    _wRegVal = (PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK) | (bAddr); \
687
    \
725
    \
688
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \
726
    PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \
Line 694... Line 732...
694
  * @param  bEpNum Endpoint Number.
732
  * @param  bEpNum Endpoint Number.
695
  * @retval None
733
  * @retval None
696
  */
734
  */
697
#define PCD_GET_EP_ADDRESS(USBx, bEpNum) ((uint8_t)(PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPADDR_FIELD))
735
#define PCD_GET_EP_ADDRESS(USBx, bEpNum) ((uint8_t)(PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPADDR_FIELD))
698
 
736
 
-
 
737
#define PCD_EP_TX_CNT(USBx, bEpNum) ((uint16_t *)((((uint32_t)(USBx)->BTABLE\
699
#define PCD_EP_TX_CNT(USBx, bEpNum) ((uint16_t *)((((uint32_t)(USBx)->BTABLE + ((uint32_t)(bEpNum) * 8U) + 2U) * PMA_ACCESS) + ((uint32_t)(USBx) + 0x400U)))
738
                                                    + ((uint32_t)(bEpNum) * 8U) + 2U) * PMA_ACCESS) + ((uint32_t)(USBx) + 0x400U)))
-
 
739
 
-
 
740
#define PCD_EP_RX_CNT(USBx, bEpNum) ((uint16_t *)((((uint32_t)(USBx)->BTABLE\
700
#define PCD_EP_RX_CNT(USBx, bEpNum) ((uint16_t *)((((uint32_t)(USBx)->BTABLE + ((uint32_t)(bEpNum) * 8U) + 6U) * PMA_ACCESS) + ((uint32_t)(USBx) + 0x400U)))
741
                                                    + ((uint32_t)(bEpNum) * 8U) + 6U) * PMA_ACCESS) + ((uint32_t)(USBx) + 0x400U)))
-
 
742
 
701
 
743
 
702
/**
744
/**
703
  * @brief  sets address of the tx/rx buffer.
745
  * @brief  sets address of the tx/rx buffer.
704
  * @param  USBx USB peripheral instance register address.
746
  * @param  USBx USB peripheral instance register address.
705
  * @param  bEpNum Endpoint Number.
747
  * @param  bEpNum Endpoint Number.
706
  * @param  wAddr address to be set (must be word aligned).
748
  * @param  wAddr address to be set (must be word aligned).
707
  * @retval None
749
  * @retval None
708
  */
750
  */
709
#define PCD_SET_EP_TX_ADDRESS(USBx, bEpNum, wAddr) do { \
751
#define PCD_SET_EP_TX_ADDRESS(USBx, bEpNum, wAddr) \
-
 
752
  do { \
710
  __IO uint16_t *_wRegVal; \
753
    __IO uint16_t *_wRegVal; \
711
  uint32_t _wRegBase = (uint32_t)USBx; \
754
    uint32_t _wRegBase = (uint32_t)USBx; \
712
  \
755
    \
713
  _wRegBase += (uint32_t)(USBx)->BTABLE; \
756
    _wRegBase += (uint32_t)(USBx)->BTABLE; \
714
  _wRegVal = (__IO uint16_t *)(_wRegBase + 0x400U + (((uint32_t)(bEpNum) * 8U) * PMA_ACCESS)); \
757
    _wRegVal = (__IO uint16_t *)(_wRegBase + 0x400U + (((uint32_t)(bEpNum) * 8U) * PMA_ACCESS)); \
715
  *_wRegVal = ((wAddr) >> 1) << 1; \
758
    *_wRegVal = ((wAddr) >> 1) << 1; \
716
} while(0) /* PCD_SET_EP_TX_ADDRESS */
759
  } while(0) /* PCD_SET_EP_TX_ADDRESS */
717
 
760
 
718
#define PCD_SET_EP_RX_ADDRESS(USBx, bEpNum, wAddr) do { \
761
#define PCD_SET_EP_RX_ADDRESS(USBx, bEpNum, wAddr) \
-
 
762
  do { \
719
  __IO uint16_t *_wRegVal; \
763
    __IO uint16_t *_wRegVal; \
720
  uint32_t _wRegBase = (uint32_t)USBx; \
764
    uint32_t _wRegBase = (uint32_t)USBx; \
721
  \
765
    \
722
  _wRegBase += (uint32_t)(USBx)->BTABLE; \
766
    _wRegBase += (uint32_t)(USBx)->BTABLE; \
723
  _wRegVal = (__IO uint16_t *)(_wRegBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 4U) * PMA_ACCESS)); \
767
    _wRegVal = (__IO uint16_t *)(_wRegBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 4U) * PMA_ACCESS)); \
724
  *_wRegVal = ((wAddr) >> 1) << 1; \
768
    *_wRegVal = ((wAddr) >> 1) << 1; \
725
} while(0) /* PCD_SET_EP_RX_ADDRESS */
769
  } while(0) /* PCD_SET_EP_RX_ADDRESS */
726
 
770
 
727
/**
771
/**
728
  * @brief  Gets address of the tx/rx buffer.
772
  * @brief  Gets address of the tx/rx buffer.
729
  * @param  USBx USB peripheral instance register address.
773
  * @param  USBx USB peripheral instance register address.
730
  * @param  bEpNum Endpoint Number.
774
  * @param  bEpNum Endpoint Number.
Line 738... Line 782...
738
  * @param  pdwReg Register pointer
782
  * @param  pdwReg Register pointer
739
  * @param  wCount Counter.
783
  * @param  wCount Counter.
740
  * @param  wNBlocks no. of Blocks.
784
  * @param  wNBlocks no. of Blocks.
741
  * @retval None
785
  * @retval None
742
  */
786
  */
743
#define PCD_CALC_BLK32(pdwReg, wCount, wNBlocks) do { \
787
#define PCD_CALC_BLK32(pdwReg, wCount, wNBlocks) \
-
 
788
  do { \
744
    (wNBlocks) = (wCount) >> 5; \
789
    (wNBlocks) = (wCount) >> 5; \
745
    if (((wCount) & 0x1fU) == 0U) \
790
    if (((wCount) & 0x1fU) == 0U) \
746
    { \
791
    { \
747
      (wNBlocks)--; \
792
      (wNBlocks)--; \
748
    } \
793
    } \
749
    *(pdwReg) = (uint16_t)(((wNBlocks) << 10) | USB_CNTRX_BLSIZE); \
794
    *(pdwReg) = (uint16_t)(((wNBlocks) << 10) | USB_CNTRX_BLSIZE); \
750
  } while(0) /* PCD_CALC_BLK32 */
795
  } while(0) /* PCD_CALC_BLK32 */
751
 
796
 
752
#define PCD_CALC_BLK2(pdwReg, wCount, wNBlocks) do { \
797
#define PCD_CALC_BLK2(pdwReg, wCount, wNBlocks) \
-
 
798
  do { \
753
    (wNBlocks) = (wCount) >> 1; \
799
    (wNBlocks) = (wCount) >> 1; \
754
    if (((wCount) & 0x1U) != 0U) \
800
    if (((wCount) & 0x1U) != 0U) \
755
    { \
801
    { \
756
      (wNBlocks)++; \
802
      (wNBlocks)++; \
757
    } \
803
    } \
758
    *(pdwReg) = (uint16_t)((wNBlocks) << 10); \
804
    *(pdwReg) = (uint16_t)((wNBlocks) << 10); \
759
  } while(0) /* PCD_CALC_BLK2 */
805
  } while(0) /* PCD_CALC_BLK2 */
760
 
806
 
761
#define PCD_SET_EP_CNT_RX_REG(pdwReg, wCount)  do { \
807
#define PCD_SET_EP_CNT_RX_REG(pdwReg, wCount) \
-
 
808
  do { \
762
    uint32_t wNBlocks; \
809
    uint32_t wNBlocks; \
763
    if ((wCount) == 0U) \
810
    if ((wCount) == 0U) \
764
    { \
811
    { \
765
      *(pdwReg) &= (uint16_t)~USB_CNTRX_NBLK_MSK; \
812
      *(pdwReg) &= (uint16_t)~USB_CNTRX_NBLK_MSK; \
766
      *(pdwReg) |= USB_CNTRX_BLSIZE; \
813
      *(pdwReg) |= USB_CNTRX_BLSIZE; \
Line 773... Line 820...
773
    { \
820
    { \
774
      PCD_CALC_BLK32((pdwReg), (wCount), wNBlocks); \
821
      PCD_CALC_BLK32((pdwReg), (wCount), wNBlocks); \
775
    } \
822
    } \
776
  } while(0) /* PCD_SET_EP_CNT_RX_REG */
823
  } while(0) /* PCD_SET_EP_CNT_RX_REG */
777
 
824
 
778
#define PCD_SET_EP_RX_DBUF0_CNT(USBx, bEpNum, wCount) do { \
825
#define PCD_SET_EP_RX_DBUF0_CNT(USBx, bEpNum, wCount) \
-
 
826
  do { \
779
     uint32_t _wRegBase = (uint32_t)(USBx); \
827
    uint32_t _wRegBase = (uint32_t)(USBx); \
780
     __IO uint16_t *pdwReg; \
828
    __IO uint16_t *pdwReg; \
781
     \
829
    \
782
    _wRegBase += (uint32_t)(USBx)->BTABLE; \
830
    _wRegBase += (uint32_t)(USBx)->BTABLE; \
783
    pdwReg = (__IO uint16_t *)(_wRegBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 2U) * PMA_ACCESS)); \
831
    pdwReg = (__IO uint16_t *)(_wRegBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 2U) * PMA_ACCESS)); \
784
    PCD_SET_EP_CNT_RX_REG(pdwReg, (wCount)); \
832
    PCD_SET_EP_CNT_RX_REG(pdwReg, (wCount)); \
785
  } while(0)
833
  } while(0)
786
 
834
 
Line 789... Line 837...
789
  * @param  USBx USB peripheral instance register address.
837
  * @param  USBx USB peripheral instance register address.
790
  * @param  bEpNum Endpoint Number.
838
  * @param  bEpNum Endpoint Number.
791
  * @param  wCount Counter value.
839
  * @param  wCount Counter value.
792
  * @retval None
840
  * @retval None
793
  */
841
  */
794
#define PCD_SET_EP_TX_CNT(USBx, bEpNum, wCount) do { \
842
#define PCD_SET_EP_TX_CNT(USBx, bEpNum, wCount) \
-
 
843
  do { \
795
    uint32_t _wRegBase = (uint32_t)(USBx); \
844
    uint32_t _wRegBase = (uint32_t)(USBx); \
796
    __IO uint16_t *_wRegVal; \
845
    __IO uint16_t *_wRegVal; \
797
    \
846
    \
798
    _wRegBase += (uint32_t)(USBx)->BTABLE; \
847
    _wRegBase += (uint32_t)(USBx)->BTABLE; \
799
    _wRegVal = (__IO uint16_t *)(_wRegBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 2U) * PMA_ACCESS)); \
848
    _wRegVal = (__IO uint16_t *)(_wRegBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 2U) * PMA_ACCESS)); \
800
    *_wRegVal = (uint16_t)(wCount); \
849
    *_wRegVal = (uint16_t)(wCount); \
801
} while(0)
850
  } while(0)
802
 
851
 
803
#define PCD_SET_EP_RX_CNT(USBx, bEpNum, wCount) do { \
852
#define PCD_SET_EP_RX_CNT(USBx, bEpNum, wCount) \
-
 
853
  do { \
804
    uint32_t _wRegBase = (uint32_t)(USBx); \
854
    uint32_t _wRegBase = (uint32_t)(USBx); \
805
    __IO uint16_t *_wRegVal; \
855
    __IO uint16_t *_wRegVal; \
806
    \
856
    \
807
    _wRegBase += (uint32_t)(USBx)->BTABLE; \
857
    _wRegBase += (uint32_t)(USBx)->BTABLE; \
808
    _wRegVal = (__IO uint16_t *)(_wRegBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 6U) * PMA_ACCESS)); \
858
    _wRegVal = (__IO uint16_t *)(_wRegBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 6U) * PMA_ACCESS)); \
809
    PCD_SET_EP_CNT_RX_REG(_wRegVal, (wCount)); \
859
    PCD_SET_EP_CNT_RX_REG(_wRegVal, (wCount)); \
810
} while(0)
860
  } while(0)
811
 
861
 
812
/**
862
/**
813
  * @brief  gets counter of the tx buffer.
863
  * @brief  gets counter of the tx buffer.
814
  * @param  USBx USB peripheral instance register address.
864
  * @param  USBx USB peripheral instance register address.
815
  * @param  bEpNum Endpoint Number.
865
  * @param  bEpNum Endpoint Number.
Line 823... Line 873...
823
  * @param  USBx USB peripheral instance register address.
873
  * @param  USBx USB peripheral instance register address.
824
  * @param  bEpNum Endpoint Number.
874
  * @param  bEpNum Endpoint Number.
825
  * @param  wBuf0Addr buffer 0 address.
875
  * @param  wBuf0Addr buffer 0 address.
826
  * @retval Counter value
876
  * @retval Counter value
827
  */
877
  */
828
#define PCD_SET_EP_DBUF0_ADDR(USBx, bEpNum, wBuf0Addr) do { \
878
#define PCD_SET_EP_DBUF0_ADDR(USBx, bEpNum, wBuf0Addr) \
-
 
879
  do { \
829
    PCD_SET_EP_TX_ADDRESS((USBx), (bEpNum), (wBuf0Addr)); \
880
    PCD_SET_EP_TX_ADDRESS((USBx), (bEpNum), (wBuf0Addr)); \
830
  } while(0) /* PCD_SET_EP_DBUF0_ADDR */
881
  } while(0) /* PCD_SET_EP_DBUF0_ADDR */
-
 
882
 
831
#define PCD_SET_EP_DBUF1_ADDR(USBx, bEpNum, wBuf1Addr) do { \
883
#define PCD_SET_EP_DBUF1_ADDR(USBx, bEpNum, wBuf1Addr) \
-
 
884
  do { \
832
    PCD_SET_EP_RX_ADDRESS((USBx), (bEpNum), (wBuf1Addr)); \
885
    PCD_SET_EP_RX_ADDRESS((USBx), (bEpNum), (wBuf1Addr)); \
833
  } while(0) /* PCD_SET_EP_DBUF1_ADDR */
886
  } while(0) /* PCD_SET_EP_DBUF1_ADDR */
834
 
887
 
835
/**
888
/**
836
  * @brief  Sets addresses in a double buffer endpoint.
889
  * @brief  Sets addresses in a double buffer endpoint.
Line 838... Line 891...
838
  * @param  bEpNum Endpoint Number.
891
  * @param  bEpNum Endpoint Number.
839
  * @param  wBuf0Addr: buffer 0 address.
892
  * @param  wBuf0Addr: buffer 0 address.
840
  * @param  wBuf1Addr = buffer 1 address.
893
  * @param  wBuf1Addr = buffer 1 address.
841
  * @retval None
894
  * @retval None
842
  */
895
  */
843
#define PCD_SET_EP_DBUF_ADDR(USBx, bEpNum, wBuf0Addr, wBuf1Addr) do { \
896
#define PCD_SET_EP_DBUF_ADDR(USBx, bEpNum, wBuf0Addr, wBuf1Addr) \
-
 
897
  do { \
844
    PCD_SET_EP_DBUF0_ADDR((USBx), (bEpNum), (wBuf0Addr)); \
898
    PCD_SET_EP_DBUF0_ADDR((USBx), (bEpNum), (wBuf0Addr)); \
845
    PCD_SET_EP_DBUF1_ADDR((USBx), (bEpNum), (wBuf1Addr)); \
899
    PCD_SET_EP_DBUF1_ADDR((USBx), (bEpNum), (wBuf1Addr)); \
846
  } while(0) /* PCD_SET_EP_DBUF_ADDR */
900
  } while(0) /* PCD_SET_EP_DBUF_ADDR */
847
 
901
 
848
/**
902
/**
Line 861... Line 915...
861
  * @param  bDir endpoint dir  EP_DBUF_OUT = OUT
915
  * @param  bDir endpoint dir  EP_DBUF_OUT = OUT
862
  *         EP_DBUF_IN  = IN
916
  *         EP_DBUF_IN  = IN
863
  * @param  wCount: Counter value
917
  * @param  wCount: Counter value
864
  * @retval None
918
  * @retval None
865
  */
919
  */
866
#define PCD_SET_EP_DBUF0_CNT(USBx, bEpNum, bDir, wCount) do { \
920
#define PCD_SET_EP_DBUF0_CNT(USBx, bEpNum, bDir, wCount) \
-
 
921
  do { \
867
    if ((bDir) == 0U) \
922
    if ((bDir) == 0U) \
868
      /* OUT endpoint */ \
923
      /* OUT endpoint */ \
869
    { \
924
    { \
870
      PCD_SET_EP_RX_DBUF0_CNT((USBx), (bEpNum), (wCount)); \
925
      PCD_SET_EP_RX_DBUF0_CNT((USBx), (bEpNum), (wCount)); \
871
    } \
926
    } \
Line 877... Line 932...
877
        PCD_SET_EP_TX_CNT((USBx), (bEpNum), (wCount)); \
932
        PCD_SET_EP_TX_CNT((USBx), (bEpNum), (wCount)); \
878
      } \
933
      } \
879
    } \
934
    } \
880
  } while(0) /* SetEPDblBuf0Count*/
935
  } while(0) /* SetEPDblBuf0Count*/
881
 
936
 
882
#define PCD_SET_EP_DBUF1_CNT(USBx, bEpNum, bDir, wCount) do { \
937
#define PCD_SET_EP_DBUF1_CNT(USBx, bEpNum, bDir, wCount) \
-
 
938
  do { \
883
    uint32_t _wBase = (uint32_t)(USBx); \
939
    uint32_t _wBase = (uint32_t)(USBx); \
884
    __IO uint16_t *_wEPRegVal; \
940
    __IO uint16_t *_wEPRegVal; \
885
    \
941
    \
886
    if ((bDir) == 0U) \
942
    if ((bDir) == 0U) \
887
    { \
943
    { \
Line 898... Line 954...
898
        *_wEPRegVal = (uint16_t)(wCount); \
954
        *_wEPRegVal = (uint16_t)(wCount); \
899
      } \
955
      } \
900
    } \
956
    } \
901
  } while(0) /* SetEPDblBuf1Count */
957
  } while(0) /* SetEPDblBuf1Count */
902
 
958
 
903
#define PCD_SET_EP_DBUF_CNT(USBx, bEpNum, bDir, wCount) do { \
959
#define PCD_SET_EP_DBUF_CNT(USBx, bEpNum, bDir, wCount) \
-
 
960
  do { \
904
    PCD_SET_EP_DBUF0_CNT((USBx), (bEpNum), (bDir), (wCount)); \
961
    PCD_SET_EP_DBUF0_CNT((USBx), (bEpNum), (bDir), (wCount)); \
905
    PCD_SET_EP_DBUF1_CNT((USBx), (bEpNum), (bDir), (wCount)); \
962
    PCD_SET_EP_DBUF1_CNT((USBx), (bEpNum), (bDir), (wCount)); \
906
  } while(0) /* PCD_SET_EP_DBUF_CNT */
963
  } while(0) /* PCD_SET_EP_DBUF_CNT */
907
 
964
 
908
/**
965
/**