📄 usb_core.lst
字号:
472 0004 1A68 ldr r2, [r3, #0]
473 0006 537A ldrb r3, [r2, #9] @ zero_extendqisi2
474 0008 43F02003 orr r3, r3, #32
475 000c 5372 strb r3, [r2, #9]
382:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** pUser_Standard_Requests->User_SetDeviceFeature();
476 .loc 1 382 0
477 000e 044B ldr r3, .L55+4
478 0010 1B68 ldr r3, [r3, #0]
479 0012 DB69 ldr r3, [r3, #28]
480 0014 9847 blx r3
383:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** return USB_SUCCESS;
384:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
481 .loc 1 384 0
482 0016 0020 movs r0, #0
483 0018 10BD pop {r4, pc}
484 .L56:
485 001a C046 .align 2
486 .L55:
487 001c 00000000 .word pInformation
488 0020 00000000 .word pUser_Standard_Requests
489 .LFE33:
491 .section .text.Standard_GetDescriptorData,"ax",%progbits
492 .align 2
493 .global Standard_GetDescriptorData
494 .thumb
495 .thumb_func
497 Standard_GetDescriptorData:
498 .LFB34:
385:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
386:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** /*******************************************************************************
387:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Function Name : Standard_GetDescriptorData.
388:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Description : Standard_GetDescriptorData is used for descriptors transfer.
389:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * : This routine is used for the descriptors resident in Flash
390:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * or RAM
391:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * pDesc can be in either Flash or RAM
392:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * The purpose of this routine is to have a versatile way to
393:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * response descriptors request. It allows user to generate
394:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * certain descriptors with software or read descriptors from
395:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * external storage part by part.
396:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Input : - Length - Length of the data in this transfer.
397:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * - pDesc - A pointer points to descriptor struct.
398:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * The structure gives the initial address of the descriptor and
399:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * its original size.
400:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Output : None.
401:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Return : Address of a part of the descriptor pointed by the Usb_
402:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * wOffset The buffer pointed by this address contains at least
403:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Length bytes.
404:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** *******************************************************************************/
405:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** uint8_t *Standard_GetDescriptorData(uint16_t Length, ONE_DESCRIPTOR *pDesc)
406:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
499 .loc 1 406 0
500 @ args = 0, pretend = 0, frame = 0
501 @ frame_needed = 0, uses_anonymous_args = 0
502 .LVL35:
503 0000 10B5 push {r4, lr}
504 .LCFI7:
407:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** uint32_t wOffset;
408:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
409:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** wOffset = pInformation->Ctrl_Info.Usb_wOffset;
505 .loc 1 409 0
506 0002 064B ldr r3, .L61
507 .loc 1 406 0
508 0004 0C46 mov r4, r1
509 .loc 1 409 0
510 0006 1A68 ldr r2, [r3, #0]
511 0008 518A ldrh r1, [r2, #18]
512 .LVL36:
410:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** if (Length == 0)
513 .loc 1 410 0
514 000a 18B9 cbnz r0, .L58
411:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
412:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** pInformation->Ctrl_Info.Usb_wLength = pDesc->Descriptor_Size - wOffset;
515 .loc 1 412 0
516 000c A388 ldrh r3, [r4, #4]
517 000e 5B1A subs r3, r3, r1
518 0010 1382 strh r3, [r2, #16] @ movhi
519 0012 01E0 b .L59
520 .L58:
413:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** return 0;
414:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
415:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
416:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** return pDesc->Descriptor + wOffset;
521 .loc 1 416 0
522 0014 2368 ldr r3, [r4, #0]
523 0016 5818 adds r0, r3, r1
524 .LVL37:
525 .L59:
526 .LVL38:
417:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
527 .loc 1 417 0
528 0018 10BD pop {r4, pc}
529 .L62:
530 001a C046 .align 2
531 .L61:
532 001c 00000000 .word pInformation
533 .LFE34:
535 .section .text.SetDeviceAddress,"ax",%progbits
536 .align 2
537 .global SetDeviceAddress
538 .thumb
539 .thumb_func
541 SetDeviceAddress:
542 .LFB43:
418:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
419:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** /*******************************************************************************
420:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Function Name : DataStageOut.
421:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Description : Data stage of a Control Write Transfer.
422:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Input : None.
423:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Output : None.
424:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Return : None.
425:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** *******************************************************************************/
426:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** void DataStageOut(void)
427:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
428:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** ENDPOINT_INFO *pEPinfo = &pInformation->Ctrl_Info;
429:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** uint32_t save_rLength;
430:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
431:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** save_rLength = pEPinfo->Usb_rLength;
432:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
433:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** if (pEPinfo->CopyData && save_rLength)
434:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
435:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** uint8_t *Buffer;
436:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** uint32_t Length;
437:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
438:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** Length = pEPinfo->PacketSize;
439:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** if (Length > save_rLength)
440:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
441:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** Length = save_rLength;
442:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
443:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
444:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** Buffer = (*pEPinfo->CopyData)(Length);
445:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** pEPinfo->Usb_rLength -= Length;
446:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** pEPinfo->Usb_rOffset += Length;
447:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
448:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** PMAToUserBufferCopy(Buffer, GetEPRxAddr(ENDP0), Length);
449:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
450:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
451:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** if (pEPinfo->Usb_rLength != 0)
452:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
453:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** vSetEPRxStatus(EP_RX_VALID);/* re-enable for next data reception */
454:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** SetEPTxCount(ENDP0, 0);
455:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** vSetEPTxStatus(EP_TX_VALID);/* Expect the host to abort the data OUT stage */
456:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
457:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** /* Set the next State*/
458:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** if (pEPinfo->Usb_rLength >= pEPinfo->PacketSize)
459:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
460:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** pInformation->ControlState = OUT_DATA;
461:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
462:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** else
463:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
464:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** if (pEPinfo->Usb_rLength > 0)
465:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
466:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** pInformation->ControlState = LAST_OUT_DATA;
467:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
468:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** else if (pEPinfo->Usb_rLength == 0)
469:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
470:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** pInformation->ControlState = WAIT_STATUS_IN;
471:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** USB_StatusIn();
472:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
473:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
474:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
475:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
476:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** /*******************************************************************************
477:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Function Name : DataStageIn.
478:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Description : Data stage of a Control Read Transfer.
479:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Input : None.
480:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Output : None.
481:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** * Return : None.
482:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** *******************************************************************************/
483:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** void DataStageIn(void)
484:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
485:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** ENDPOINT_INFO *pEPinfo = &pInformation->Ctrl_Info;
486:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** uint32_t save_wLength = pEPinfo->Usb_wLength;
487:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** uint32_t ControlState = pInformation->ControlState;
488:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
489:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** uint8_t *DataBuffer;
490:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** uint32_t Length;
491:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
492:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** if ((save_wLength == 0) && (ControlState == LAST_IN_DATA))
493:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
494:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** if(Data_Mul_MaxPacketSize == TRUE)
495:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
496:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** /* No more data to send and empty packet */
497:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** Send0LengthData();
498:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** ControlState = LAST_IN_DATA;
499:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** Data_Mul_MaxPacketSize = FALSE;
500:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
501:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** else
502:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
503:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** /* No more data to send so STALL the TX Status*/
504:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** ControlState = WAIT_STATUS_OUT;
505:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** vSetEPTxStatus(EP_TX_STALL);
506:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
507:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
508:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** goto Expect_Status_Out;
509:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
510:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
511:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** Length = pEPinfo->PacketSize;
512:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** ControlState = (save_wLength <= Length) ? LAST_IN_DATA : IN_DATA;
513:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
514:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** if (Length > save_wLength)
515:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** {
516:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** Length = save_wLength;
517:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** }
518:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
519:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** DataBuffer = (*pEPinfo->CopyData)(Length);
520:lib/STM32_USB-FS-Device_Driver/src/usb_core.c ****
521:lib/STM32_USB-FS-Device_Driver/src/usb_core.c **** UserToPMABufferCopy(DataBuffer, GetEPTxAddr(ENDP0), Length);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -