📄 vcomuser.lst
字号:
635 1 if ( channelNum == 1 ) {
636 2 mcr = U1MCR & 0xFD;
637 2 U1MCR = mcr | (ConfigValue << 1);
638 2 }
639 1 }
640
641 void GetSIOModemStatus( BYTE channelNum )
642 {
643 1 channelNum = channelNum;
644 1 }
645
646 /*
647 * VCOM Get SIO Setup Request Callback
648 * Parameters: None (global SetupPacket and EP0Buf)
649 * Return Value: TRUE - Success, FALSE - Error
650 */
651
652 BOOL VCOM_GetSIOSetup (void) {
ARM COMPILER V2.31, VCOMuser 23/11/05 10:53:11 PAGE 11
653 1 /* Get SIO setup from the device, not supported */
654 1 return (TRUE);
655 1 }
656
657
658 /*
659 * VCOM Set SIO Setup Request Callback
660 * Parameters: None (global SetupPacket and EP0Buf)
661 * Return Value: TRUE - Success, FALSE - Error
662 */
663
664 BOOL VCOM_SetSIOSetup( BYTE Cmd, BYTE Data ) {
665 1
666 1 BYTE ChannelNum;
667 1
668 1 /* Set SIO configuration, baudrate, data bits, stop bits, parity, flow control,
669 1 based on the info. from the host */
670 1 if ( !(Cmd & 0x20) )
671 1 ChannelNum = 0;
672 1 else
673 1 ChannelNum = 1;
674 1
675 1 Cmd &= ~0x20; /* clear bit 5, use all cmd for channel 0 */
676 1 switch ( Cmd ) {
677 2 case BAUDRATE_SETUP:
678 2 SetSIOBaudrate( ChannelNum, Data );
679 2 break;
680 2 case STOPBIT_SETUP:
681 2 SetSIOStopBit( ChannelNum, Data );
682 2 break;
683 2 case DATABIT_SETUP:
684 2 SetSIODataBit( ChannelNum, Data );
685 2 break;
686 2 case PARITY_SETUP:
687 2 SetSIOParity( ChannelNum, Data );
688 2 break;
689 2 case FLOWCTRL_SETUP:
690 2 SetSIOFlowControl( ChannelNum, Data );
691 2 break;
692 2 case DTR_SETUP:
693 2 SetSIODTR( ChannelNum, Data );
694 2 break;
695 2 case RTS_SETUP:
696 2 SetSIORTS( ChannelNum, Data );
697 2 break;
698 2 case HARDCODE_SETUP:
699 2 break;
700 2 case MODEM_SETUP:
701 2 GetSIOModemStatus( ChannelNum );
702 2 break;
703 2 default:
704 2 // EP0Buf[] = ...;
705 2 // break;
706 2 return (FALSE);
707 2 }
708 1 return (TRUE);
709 1 }
710
ARM COMPILER V2.31, VCOMuser 23/11/05 10:53:11 PAGE 12
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (USB_ReadEP?T)
EXTERN CODE16 (USB_WriteEP?T)
EXTERN DATA (USB_Configuration)
EXTERN CODE16 (USB_ResetCore?T)
EXTERN CODE16 (USB_EndPoint0?T)
*** PUBLICS:
PUBLIC USB_Reset_Event?T
PUBLIC DeviceData2UART?T
PUBLIC DeviceData2Host?T
PUBLIC USB_EndPoint1?T
PUBLIC USB_EndPoint2?T
PUBLIC USB_EndPoint3?T
PUBLIC USB_EndPoint4?T
PUBLIC USB_EndPoint5?T
PUBLIC USB_EndPoint6?T
PUBLIC USB_EndPoint7?T
PUBLIC USB_EndPoint8?T
PUBLIC USB_EndPoint9?T
PUBLIC USB_EndPoint10?T
PUBLIC USB_EndPoint11?T
PUBLIC USB_EndPoint12?T
PUBLIC USB_EndPoint13?T
PUBLIC USB_EndPoint14?T
PUBLIC USB_EndPoint15?T
PUBLIC USB_Configure_Event?T
PUBLIC init_serial?T
PUBLIC putchar?T
PUBLIC getchar?T
PUBLIC VCOM_SetSIOSetup?T
PUBLIC VCOM_GetSIOSetup?T
PUBLIC SetSIOBaudrate?T
PUBLIC SetSIOStopBit?T
PUBLIC SetSIODataBit?T
PUBLIC SetSIOParity?T
PUBLIC SetSIOFlowControl?T
PUBLIC SetSIODTR?T
PUBLIC SetSIORTS?T
PUBLIC GetSIOModemStatus?T
PUBLIC USB_P_EP
PUBLIC ReportStatus0
PUBLIC ReportStatus1
PUBLIC Data2Host0
PUBLIC Data2Host1
PUBLIC RxLength0
PUBLIC RxLength1
PUBLIC USB2UARTBuf0
PUBLIC USB2UARTBuf1
PUBLIC UART2USBBuf0
PUBLIC UART2USBBuf1
*** DATA SEGMENT '?DT0?VCOMuser':
00000000 USB_P_EP:
00000000 BEGIN_INIT
00000000 00000000 DD USB_EndPoint0?T
00000004 00000000 DD USB_EndPoint1?T
00000008 00000000 DD USB_EndPoint2?T
0000000C 00000000 DD USB_EndPoint3?T
00000010 00000000 DD USB_EndPoint4?T
00000014 00000000 DD USB_EndPoint5?T
00000018 00000000 DD 0x0
0000001C 00000000 DD 0x0
ARM COMPILER V2.31, VCOMuser 23/11/05 10:53:11 PAGE 13
00000020 00000000 DD 0x0
00000024 00000000 DD 0x0
00000028 00000000 DD 0x0
0000002C 00000000 DD 0x0
00000030 00000000 DD 0x0
00000034 00000000 DD 0x0
00000038 00000000 DD 0x0
0000003C 00000000 DD 0x0
00000040 END_INIT
00000040 KeyPressed:
00000040 BEGIN_INIT
00000040 00 DB 0x0
00000041 END_INIT
00000041 ReportStatus0:
00000041 BEGIN_INIT
00000041 00 DB 0x0
00000042 END_INIT
00000042 ReportStatus1:
00000042 BEGIN_INIT
00000042 00 DB 0x0
00000043 END_INIT
00000043 Data2Host0:
00000043 BEGIN_INIT
00000043 00 DB 0x0
00000044 END_INIT
00000044 Data2Host1:
00000044 BEGIN_INIT
00000044 00 DB 0x0
00000045 END_INIT
00000045 RxLength0:
00000045 DS 1
00000046 RxLength1:
00000046 DS 1
00000047 USB2UARTBuf0:
00000047 DS 64
00000087 USB2UARTBuf1:
00000087 DS 64
000000C7 UART2USBBuf0:
000000C7 DS 64
00000107 UART2USBBuf1:
00000107 DS 64
*** CODE SEGMENT '?PR?DeviceData2UART?T?VCOMuser':
52: void DeviceData2UART( BYTE portNum )
00000000 B5F0 PUSH {R4-R7,LR}
00000002 1C07 MOV R7,R0 ; portNum
00000004 ---- Variable 'portNum' assigned to Register 'R7' ----
00000004 ---- Variable 'pData' assigned to Register 'R6' ----
00000004 ---- Variable 'i' assigned to Register 'R5' ----
00000004 ---- Variable 'cnt' assigned to Register 'R4' ----
53: {
00000004 ; SCOPE-START
61: if ( portNum == 0 ) {
00000004 1C38 MOV R0,R7 ; portNum
00000006 0600 LSL R0,R0,#0x18 ; portNum
00000008 0E00 LSR R0,R0,#0x18
0000000A 2800 CMP R0,#0x0
0000000C D115 BNE L_1 ; T=0x0000003A
62: pData = &USB2UARTBuf0[0];
0000000E 4800 LDR R6,=USB2UARTBuf0 ; USB2UARTBuf0
63: cnt = USB_ReadEP(0x02, pData);
00000010 1C31 MOV R1,R6 ; pData
00000012 2002 MOV R0,#0x2
00000014 F7FF BL USB_ReadEP?T ; T=0x0001 (1)
00000016 FFF4 BL USB_ReadEP?T ; T=0x0001 (2)
00000018 1C04 MOV R4,R0 ; cnt
ARM COMPILER V2.31, VCOMuser 23/11/05 10:53:11 PAGE 14
74: for ( i = 0; i < cnt; i++ ) {
0000001A 2500 MOV R5,#0x0
0000001C E008 B L_4 ; T=0x00000030
0000001E L_5:
75: putchar( portNum, (BYTE)*pData );
0000001E 1C30 MOV R0,R6 ; pData
00000020 7801 LDRB R1,[R0,#0x0] ; pData
00000022 1C38 MOV R0,R7 ; portNum
00000024 0600 LSL R0,R0,#0x18 ; portNum
00000026 0E00 LSR R0,R0,#0x18
00000028 F7FF BL putchar?T ; T=0x0001 (1)
0000002A FFEA BL putchar?T ; T=0x0001 (2)
76: pData++;
0000002C 3601 ADD R6,#0x1
77: }
0000002E 3501 ADD R5,#0x1
00000030 L_4:
00000030 1C21 MOV R1,R4 ; cnt
00000032 1C28 MOV R0,R5 ; i
00000034 4288 CMP R0,R1 ; i
00000036 D3F2 BCC L_5 ; T=0x0000001E
79: }
00000038 E019 B L_7 ; T=0x0000006E
0000003A L_1:
80: else if ( portNum == 1 ) {
0000003A 1C38 MOV R0,R7 ; portNum
0000003C 0600 LSL R0,R0,#0x18 ; portNum
0000003E 0E00 LSR R0,R0,#0x18
00000040 2801 CMP R0,#0x1
00000042 D114 BNE L_7 ; T=0x0000006E
81: pData = &USB2UARTBuf1[0];
00000044 4800 LDR R6,=USB2UARTBuf1 ; USB2UARTBuf1
82: cnt = USB_ReadEP(0x05, pData);
00000046 1C31 MOV R1,R6 ; pData
00000048 2005 MOV R0,#0x5
0000004A F7FF BL USB_ReadEP?T ; T=0x0001 (1)
0000004C FFD9 BL USB_ReadEP?T ; T=0x0001 (2)
0000004E 1C04 MOV R4,R0 ; cnt
93: for ( i = 0; i < cnt; i++ ) {
00000050 2500 MOV R5,#0x0
00000052 E008 B L_11 ; T=0x00000066
00000054 L_12:
94: putchar( portNum, (BYTE)*pData );
00000054 1C30 MOV R0,R6 ; pData
00000056 7801 LDRB R1,[R0,#0x0] ; pData
00000058 1C38 MOV R0,R7 ; portNum
0000005A 0600 LSL R0,R0,#0x18 ; portNum
0000005C 0E00 LSR R0,R0,#0x18
0000005E F7FF BL putchar?T ; T=0x0001 (1)
00000060 FFCF BL putchar?T ; T=0x0001 (2)
95: pData++;
00000062 3601 ADD R6,#0x1
96: }
00000064 3501 ADD R5,#0x1
00000066 L_11:
00000066 1C21 MOV R1,R4 ; cnt
00000068 1C28 MOV R0,R5 ; i
0000006A 4288 CMP R0,R1 ; i
0000006C D3F2 BCC L_12 ; T=0x00000054
98: }
0000006E L_7:
99: return;
0000006E ; SCOPE-END
100: }
0000006E BCF0 POP {R4-R7}
00000070 BC08 POP {R3}
ARM COMPILER V2.31, VCOMuser 23/11/05 10:53:11 PAGE 15
00000072 4718 BX R3
00000074 ENDP ; 'DeviceData2UART?T'
*** CODE SEGMENT '?PR?DeviceData2Host?T?VCOMuser':
102: void DeviceData2Host( BYTE portNum )
00000000 B530 PUSH {R4-R5,LR}
00000002 1C04 MOV R4,R0 ; portNum
00000004 ---- Variable 'portNum' assigned to Register 'R4' ----
109: if ( portNum == 0 ) {
00000004 1C20 MOV R0,R4 ; portNum
00000006 0605 LSL R5,R0,#0x18 ; portNum
00000008 0E2D LSR R5,R5,#0x18
0000000A 2D00 CMP R5,#0x0
0000000C D125 BNE L_15 ; T=0x0000005A
122: if ( ((U0LSR & 0x01) == 1) && (RxLength0 < USB_VCOM_BUFSIZE) ) {
0000000E 4800 LDR R0,=0xE000C014
00000010 7800 LDRB R0,[R0,#0x0]
00000012 2101 MOV R1,#0x1
00000014 4008 AND R0,R1
00000016 2801 CMP R0,#0x1
00000018 D112 BNE L_16 ; T=0x00000040
0000001A 4800 LDR R0,=RxLength0 ; RxLength0
0000001C 7800 LDRB R0,[R0,#0x0] ; RxLength0
0000001E 2804 CMP R0,#0x4
00000020 DA0E BGE L_16 ; T=0x00000040
123: UART2USBBuf0[RxLength0] = getchar( portNum );
00000022 1C20 MOV R0,R4 ; portNum
00000024 0600 LSL R0,R0,#0x18 ; portNum
00000026 0E00 LSR R0,R0,#0x18
00000028 F7FF BL getchar?T ; T=0x0001 (1)
0000002A FFEA BL getchar?T ; T=0x0001 (2)
0000002C 4800 LDR R1,=RxLength0 ; RxLength0
0000002E 7809 LDRB R1,[R1,#0x0] ; RxLength0
00000030 1C0A MOV R2,R1
00000032 4800 LDR R1,=UART2USBBuf0 ; UART2USBBuf0
00000034 5488 STRB R0,[R1,R2]
124: RxLength0++;
00000036 4800 LDR R0,=RxLength0 ; RxLength0
00000038 7801 LDRB R1,[R0,#0x0] ; RxLength0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -