📄 usblib.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\usblib.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
ReconfigUsbd PROC
;;;31 void ReconfigUsbd(void)
;;;32 {
000000 e3a00000 MOV r0,#0
;;;33 // *** End point information ***
;;;34 // EP0: control
;;;35 // EP1: bulk in end point
;;;36 // EP2: not used
;;;37 // EP3: bulk out end point
;;;38 // EP4: not used
;;;39
;;;40 rPWR_REG=PWR_REG_DEFAULT_VALUE; //disable suspend mode
000004 e59f13c0 LDR r1,|L1.972|
000008 e5c10144 STRB r0,[r1,#0x144]
;;;41
;;;42 rINDEX_REG=0;
00000c e3a00000 MOV r0,#0
000010 e1c11000 BIC r1,r1,r0
000014 e5c10178 STRB r0,[r1,#0x178]
;;;43 rMAXP_REG=FIFO_SIZE_8; //EP0 max packit size = 8
000018 e3a00001 MOV r0,#1
00001c e1c11000 BIC r1,r1,r0
000020 e5c10180 STRB r0,[r1,#0x180]
;;;44 rEP0_CSR=EP0_SERVICED_OUT_PKT_RDY|EP0_SERVICED_SETUP_END;
000024 e3a000c0 MOV r0,#0xc0
000028 e1c11000 BIC r1,r1,r0
00002c e5c10184 STRB r0,[r1,#0x184]
;;;45 // Uart_Printf("0MAXP_REG: 0x%x EP0_PKT_SIZE: 0x%x \n", rMAXP_REG, EP0_PKT_SIZE);
;;;46 //EP0:clear OUT_PKT_RDY & SETUP_END
;;;47 rINDEX_REG=1;
000030 e3a00001 MOV r0,#1
000034 e1c11000 BIC r1,r1,r0
000038 e5c10178 STRB r0,[r1,#0x178]
;;;48 #if (EP1_PKT_SIZE==32)
;;;49 rMAXP_REG=FIFO_SIZE_32; //EP1:max packit size = 32
;;;50 #else
;;;51 rMAXP_REG=FIFO_SIZE_64; //EP1:max packit size = 64
00003c e3a00008 MOV r0,#8
000040 e1c11000 BIC r1,r1,r0
000044 e5c10180 STRB r0,[r1,#0x180]
;;;52 #endif
;;;53 rIN_CSR1_REG=EPI_FIFO_FLUSH|EPI_CDT;
000048 e3a00048 MOV r0,#0x48
00004c e1c11000 BIC r1,r1,r0
000050 e5c10184 STRB r0,[r1,#0x184]
;;;54 rIN_CSR2_REG=EPI_MODE_IN|EPI_IN_DMA_INT_MASK|EPI_BULK; //IN mode, IN_DMA_INT=masked
000054 e3a00030 MOV r0,#0x30
000058 e1c11000 BIC r1,r1,r0
00005c e5c10188 STRB r0,[r1,#0x188]
;;;55 rOUT_CSR1_REG=EPO_CDT;
000060 e3a00080 MOV r0,#0x80
000064 e1c11000 BIC r1,r1,r0
000068 e5c10190 STRB r0,[r1,#0x190]
;;;56 rOUT_CSR2_REG=EPO_BULK|EPO_OUT_DMA_INT_MASK;
00006c e3a00020 MOV r0,#0x20
000070 e1c11000 BIC r1,r1,r0
000074 e5c10194 STRB r0,[r1,#0x194]
;;;57 // Uart_Printf("1MAXP_REG: 0x%x EP1_PKT_SIZE: 0x%x \n", rMAXP_REG, EP1_PKT_SIZE);
;;;58
;;;59 rINDEX_REG=2;
000078 e3a00002 MOV r0,#2
00007c e1c11000 BIC r1,r1,r0
000080 e5c10178 STRB r0,[r1,#0x178]
;;;60 rMAXP_REG=FIFO_SIZE_64; //EP2:max packit size = 64
000084 e3a00008 MOV r0,#8
000088 e1c11000 BIC r1,r1,r0
00008c e5c10180 STRB r0,[r1,#0x180]
;;;61 rIN_CSR1_REG=EPI_FIFO_FLUSH|EPI_CDT|EPI_BULK;
000090 e3a00048 MOV r0,#0x48
000094 e1c11000 BIC r1,r1,r0
000098 e5c10184 STRB r0,[r1,#0x184]
;;;62 rIN_CSR2_REG=EPI_MODE_IN|EPI_IN_DMA_INT_MASK; //IN mode, IN_DMA_INT=masked
00009c e3a00030 MOV r0,#0x30
0000a0 e1c11000 BIC r1,r1,r0
0000a4 e5c10188 STRB r0,[r1,#0x188]
;;;63 rOUT_CSR1_REG=EPO_CDT;
0000a8 e3a00080 MOV r0,#0x80
0000ac e1c11000 BIC r1,r1,r0
0000b0 e5c10190 STRB r0,[r1,#0x190]
;;;64 rOUT_CSR2_REG=EPO_BULK|EPO_OUT_DMA_INT_MASK;
0000b4 e3a00020 MOV r0,#0x20
0000b8 e1c11000 BIC r1,r1,r0
0000bc e5c10194 STRB r0,[r1,#0x194]
;;;65
;;;66 rINDEX_REG=3;
0000c0 e3a00003 MOV r0,#3
0000c4 e1c11000 BIC r1,r1,r0
0000c8 e5c10178 STRB r0,[r1,#0x178]
;;;67 #if (EP3_PKT_SIZE==32)
;;;68 rMAXP_REG=FIFO_SIZE_32; //EP3:max packit size = 32
;;;69 #else
;;;70 rMAXP_REG=FIFO_SIZE_64; //EP3:max packit size = 64
0000cc e3a00008 MOV r0,#8
0000d0 e1c11000 BIC r1,r1,r0
0000d4 e5c10180 STRB r0,[r1,#0x180]
;;;71 #endif
;;;72 rIN_CSR1_REG=EPI_FIFO_FLUSH|EPI_CDT|EPI_BULK;
0000d8 e3a00048 MOV r0,#0x48
0000dc e1c11000 BIC r1,r1,r0
0000e0 e5c10184 STRB r0,[r1,#0x184]
;;;73 rIN_CSR2_REG=EPI_MODE_OUT|EPI_IN_DMA_INT_MASK; //OUT mode, IN_DMA_INT=masked
0000e4 e3a00010 MOV r0,#0x10
0000e8 e1c11000 BIC r1,r1,r0
0000ec e5c10188 STRB r0,[r1,#0x188]
;;;74 rOUT_CSR1_REG=EPO_CDT;
0000f0 e3a00080 MOV r0,#0x80
0000f4 e1c11000 BIC r1,r1,r0
0000f8 e5c10190 STRB r0,[r1,#0x190]
;;;75 //clear OUT_PKT_RDY, data_toggle_bit.
;;;76 //The data toggle bit should be cleared when initialization.
;;;77 rOUT_CSR2_REG=EPO_BULK|EPO_OUT_DMA_INT_MASK;
0000fc e3a00020 MOV r0,#0x20
000100 e1c11000 BIC r1,r1,r0
000104 e5c10194 STRB r0,[r1,#0x194]
;;;78 //Uart_Printf("3MAXP_REG: 0x%x EP3_PKT_SIZE: 0x%x \n", rMAXP_REG, EP3_PKT_SIZE);
;;;79
;;;80 rINDEX_REG=4;
000108 e3a00004 MOV r0,#4
00010c e1c11000 BIC r1,r1,r0
000110 e5c10178 STRB r0,[r1,#0x178]
;;;81 rMAXP_REG=FIFO_SIZE_64; //EP4:max packit size = 64
000114 e3a00008 MOV r0,#8
000118 e1c11000 BIC r1,r1,r0
00011c e5c10180 STRB r0,[r1,#0x180]
;;;82 rIN_CSR1_REG=EPI_FIFO_FLUSH|EPI_CDT|EPI_BULK;
000120 e3a00048 MOV r0,#0x48
000124 e1c11000 BIC r1,r1,r0
000128 e5c10184 STRB r0,[r1,#0x184]
;;;83 rIN_CSR2_REG=EPI_MODE_OUT|EPI_IN_DMA_INT_MASK; //OUT mode, IN_DMA_INT=masked
00012c e3a00010 MOV r0,#0x10
000130 e1c11000 BIC r1,r1,r0
000134 e5c10188 STRB r0,[r1,#0x188]
;;;84 rOUT_CSR1_REG=EPO_CDT;
000138 e3a00080 MOV r0,#0x80
00013c e1c11000 BIC r1,r1,r0
000140 e5c10190 STRB r0,[r1,#0x190]
;;;85 //clear OUT_PKT_RDY, data_toggle_bit.
;;;86 //The data toggle bit should be cleared when initialization.
;;;87 rOUT_CSR2_REG=EPO_BULK|EPO_OUT_DMA_INT_MASK;
000144 e3a00020 MOV r0,#0x20
000148 e1c11000 BIC r1,r1,r0
00014c e5c10194 STRB r0,[r1,#0x194]
;;;88
;;;89 rEP_INT_REG=EP0_INT|EP1_INT|EP2_INT|EP3_INT|EP4_INT;
000150 e3a0001f MOV r0,#0x1f
000154 e1c11000 BIC r1,r1,r0
000158 e5c10148 STRB r0,[r1,#0x148]
;;;90 rUSB_INT_REG=RESET_INT|SUSPEND_INT|RESUME_INT;
00015c e3a00007 MOV r0,#7
000160 e1c11000 BIC r1,r1,r0
000164 e5c10158 STRB r0,[r1,#0x158]
;;;91 //Clear all usbd pending bits
;;;92
;;;93 //EP0,1,3 & reset interrupt are enabled
;;;94 rEP_INT_EN_REG=EP0_INT|EP1_INT|EP3_INT;
000168 e3a0000b MOV r0,#0xb
00016c e1c11000 BIC r1,r1,r0
000170 e5c1015c STRB r0,[r1,#0x15c]
;;;95 rUSB_INT_EN_REG=RESET_INT;
000174 e3a00004 MOV r0,#4
000178 e1c11000 BIC r1,r1,r0
00017c e5c1016c STRB r0,[r1,#0x16c]
;;;96 // ep0State=EP0_STATE_INIT;
;;;97
;;;98
;;;99 }
000180 e12fff1e BX lr
ENDP
ConfigUsbd PROC
;;;22 void ConfigUsbd(void)
;;;23 {
000184 e52de004 STR lr,[sp,#-4]!
;;;24
;;;25 ReconfigUsbd();
000188 ebfffffe BL ReconfigUsbd
;;;26
;;;27 rINTMSK&=~(BIT_USBD);
00018c e59f023c LDR r0,|L1.976|
000190 e5900008 LDR r0,[r0,#8]
000194 e3c00780 BIC r0,r0,#0x2000000
000198 e59f1230 LDR r1,|L1.976|
00019c e5810008 STR r0,[r1,#8]
;;;28 }
0001a0 e49df004 LDR pc,[sp],#4
ENDP
RdPktEp0 PROC
;;;102 void RdPktEp0(U8 *buf,int num)
;;;103 {
0001a4 e3a02000 MOV r2,#0
;;;104 int i;
;;;105
;;;106 for(i=0;i<num;i++)
|L1.424|
0001a8 e1520001 CMP r2,r1
0001ac aa000006 BGE |L1.460|
0001b0 ea000001 B |L1.444|
|L1.436|
0001b4 e2822001 ADD r2,r2,#1
0001b8 eafffffa B |L1.424|
;;;107 {
;;;108 buf[i]=(U8)rEP0_FIFO;
|L1.444|
0001bc e59f3208 LDR r3,|L1.972|
0001c0 e5d331c0 LDRB r3,[r3,#0x1c0]
0001c4 e7c03002 STRB r3,[r0,r2]
;;;109 }
0001c8 eafffff9 B |L1.436|
;;;110 }
|L1.460|
0001cc e12fff1e BX lr
ENDP
WrPktEp0 PROC
;;;113 void WrPktEp0(U8 *buf,int num)
;;;114 {
0001d0 e3a02000 MOV r2,#0
;;;115 int i;
;;;116
;;;117 for(i=0;i<num;i++)
|L1.468|
0001d4 e1520001 CMP r2,r1
0001d8 aa000006 BGE |L1.504|
0001dc ea000001 B |L1.488|
|L1.480|
0001e0 e2822001 ADD r2,r2,#1
0001e4 eafffffa B |L1.468|
;;;118 {
;;;119 rEP0_FIFO=buf[i];
|L1.488|
0001e8 e7d03002 LDRB r3,[r0,r2]
0001ec e59fc1d8 LDR r12,|L1.972|
0001f0 e5cc31c0 STRB r3,[r12,#0x1c0]
;;;120 }
0001f4 eafffff9 B |L1.480|
;;;121 }
|L1.504|
0001f8 e12fff1e BX lr
ENDP
WrByteEp0 PROC
;;;123 void WrByteEp0(U8 value)
;;;124 {
0001fc e59f11c8 LDR r1,|L1.972|
;;;125 rEP0_FIFO= value;
000200 e5c101c0 STRB r0,[r1,#0x1c0]
;;;126 }
000204 e12fff1e BX lr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -