📄 smartcard.txt
字号:
;;;230 /* Send PTS0 */
;;;231 SCData = 0x10;
00005e 2010 MOVS r0,#0x10
000060 7038 STRB r0,[r7,#0]
;;;232 USART_SendData(USART3, SCData);
000062 7839 LDRB r1,[r7,#0] ; SCData
000064 4648 MOV r0,r9
000066 f7fffffe BL USART_SendData
|L4.106|
;;;233 while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
00006a 2140 MOVS r1,#0x40
00006c 4648 MOV r0,r9
00006e f7fffffe BL USART_GetFlagStatus
000072 2800 CMP r0,#0
000074 d0f9 BEQ |L4.106|
;;;234 {
;;;235 }
;;;236
;;;237 /* Send PTS1 */
;;;238 SCData = SC_A2R.T[0];
000076 78b0 LDRB r0,[r6,#2] ; SC_A2R
000078 7038 STRB r0,[r7,#0]
;;;239 USART_SendData(USART3, SCData);
00007a 7839 LDRB r1,[r7,#0] ; SCData
00007c 4648 MOV r0,r9
00007e f7fffffe BL USART_SendData
|L4.130|
;;;240 while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
000082 2140 MOVS r1,#0x40
000084 4648 MOV r0,r9
000086 f7fffffe BL USART_GetFlagStatus
00008a 2800 CMP r0,#0
00008c d0f9 BEQ |L4.130|
;;;241 {
;;;242 }
;;;243
;;;244 /* Send PCK */
;;;245 SCData = (u8)0xFF^(u8)0x10^(u8)SC_A2R.T[0];
00008e 78b0 LDRB r0,[r6,#2] ; SC_A2R
000090 f08000ef EOR r0,r0,#0xef
000094 7038 STRB r0,[r7,#0]
;;;246 USART_SendData(USART3, SCData);
000096 7839 LDRB r1,[r7,#0] ; SCData
000098 464f MOV r7,r9
00009a 4648 MOV r0,r9
00009c f7fffffe BL USART_SendData
|L4.160|
;;;247 while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
0000a0 2140 MOVS r1,#0x40
0000a2 4638 MOV r0,r7
0000a4 f7fffffe BL USART_GetFlagStatus
0000a8 2800 CMP r0,#0
0000aa d0f9 BEQ |L4.160|
;;;248 {
;;;249 }
;;;250
;;;251 /* Disable the DMA Receive (Reset DMAR bit only) */
;;;252 USART_DMACmd(USART3, USART_DMAReq_Rx, DISABLE);
0000ac 2200 MOVS r2,#0
0000ae 2140 MOVS r1,#0x40
0000b0 46b9 MOV r9,r7
0000b2 4638 MOV r0,r7
0000b4 f7fffffe BL USART_DMACmd
;;;253
;;;254 if((USART_ByteReceive(&locData, SC_Receive_Timeout)) == SUCCESS)
0000b8 f44f4780 MOV r7,#0x4000
0000bc 4639 MOV r1,r7
0000be a807 ADD r0,sp,#0x1c
0000c0 f7fffffe BL USART_ByteReceive
0000c4 2801 CMP r0,#1
0000c6 d104 BNE |L4.210|
;;;255 {
;;;256 if(locData != 0xFF)
0000c8 f89d001c LDRB r0,[sp,#0x1c]
0000cc 28ff CMP r0,#0xff
0000ce d000 BEQ |L4.210|
;;;257 {
;;;258 PTSConfirmStatus = 0x00;
0000d0 2400 MOVS r4,#0
|L4.210|
;;;259 }
;;;260 }
;;;261 if((USART_ByteReceive(&locData, SC_Receive_Timeout)) == SUCCESS)
0000d2 4639 MOV r1,r7
0000d4 a807 ADD r0,sp,#0x1c
0000d6 f7fffffe BL USART_ByteReceive
0000da 2801 CMP r0,#1
0000dc d104 BNE |L4.232|
;;;262 {
;;;263 if(locData != 0x10)
0000de f89d001c LDRB r0,[sp,#0x1c]
0000e2 2810 CMP r0,#0x10
0000e4 d000 BEQ |L4.232|
;;;264 {
;;;265 PTSConfirmStatus = 0x00;
0000e6 2400 MOVS r4,#0
|L4.232|
;;;266 }
;;;267 }
;;;268 if((USART_ByteReceive(&locData, SC_Receive_Timeout)) == SUCCESS)
0000e8 4639 MOV r1,r7
0000ea a807 ADD r0,sp,#0x1c
0000ec f7fffffe BL USART_ByteReceive
0000f0 2801 CMP r0,#1
0000f2 d105 BNE |L4.256|
;;;269 {
;;;270 if(locData != SC_A2R.T[0])
0000f4 78b0 LDRB r0,[r6,#2] ; SC_A2R
0000f6 f89d101c LDRB r1,[sp,#0x1c]
0000fa 4288 CMP r0,r1
0000fc d000 BEQ |L4.256|
;;;271 {
;;;272 PTSConfirmStatus = 0x00;
0000fe 2400 MOVS r4,#0
|L4.256|
;;;273 }
;;;274 }
;;;275 if((USART_ByteReceive(&locData, SC_Receive_Timeout)) == SUCCESS)
000100 4639 MOV r1,r7
000102 a807 ADD r0,sp,#0x1c
000104 f7fffffe BL USART_ByteReceive
000108 2801 CMP r0,#1
00010a d13d BNE |L4.392|
;;;276 {
;;;277 if(locData != ((u8)0xFF^(u8)0x10^(u8)SC_A2R.T[0]))
00010c 78b0 LDRB r0,[r6,#2] ; SC_A2R
00010e f89d201c LDRB r2,[sp,#0x1c]
000112 f08001ef EOR r1,r0,#0xef
000116 4291 CMP r1,r2
000118 d136 BNE |L4.392|
;;;278 {
;;;279 PTSConfirmStatus = 0x00;
;;;280 }
;;;281 }
;;;282 else
;;;283 {
;;;284 PTSConfirmStatus = 0x00;
;;;285 }
;;;286 /* PTS Confirm */
;;;287 if(PTSConfirmStatus == 0x01)
00011a 2c01 CMP r4,#1
00011c d134 BNE |L4.392|
;;;288 {
;;;289 workingbaudrate = apbclock * D_Table[(SC_A2R.T[0] & (u8)0x0F)];
00011e 4a1e LDR r2,|L4.408|
000120 f000010f AND r1,r0,#0xf
000124 3244 ADDS r2,r2,#0x44
000126 f8521021 LDR r1,[r2,r1,LSL #2]
;;;290 workingbaudrate /= F_Table[((SC_A2R.T[0] >> 4) & (u8)0x0F)];
00012a 0900 LSRS r0,r0,#4
00012c 3a40 SUBS r2,r2,#0x40
00012e f8520020 LDR r0,[r2,r0,LSL #2]
000132 4369 MULS r1,r5,r1 ;289
000134 fbb1f5f0 UDIV r5,r1,r0
;;;291
;;;292 USART_ClockInitStructure.USART_Clock = USART_Clock_Enable;
000138 02e0 LSLS r0,r4,#11
00013a e000 B |L4.318|
|L4.316|
00013c e024 B |L4.392|
|L4.318|
00013e f8ad0004 STRH r0,[sp,#4]
;;;293 USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
;;;294 USART_ClockInitStructure.USART_CPHA = USART_CPHA_1Edge;
000142 f8ad8008 STRH r8,[sp,#8]
;;;295 USART_ClockInitStructure.USART_LastBit = USART_LastBit_Enable;
000146 10c0 ASRS r0,r0,#3
000148 f8ad000a STRH r0,[sp,#0xa]
00014c 4644 MOV r4,r8 ;293
00014e f8ad8006 STRH r8,[sp,#6] ;293
;;;296 USART_ClockInit(USART3, &USART_ClockInitStructure);
000152 a901 ADD r1,sp,#4
000154 464e MOV r6,r9
000156 4648 MOV r0,r9
000158 f7fffffe BL USART_ClockInit
;;;297
;;;298 USART_InitStructure.USART_BaudRate = workingbaudrate;
;;;299 USART_InitStructure.USART_WordLength = USART_WordLength_9b;
00015c f44f5080 MOV r0,#0x1000
000160 f8ad0010 STRH r0,[sp,#0x10]
;;;300 USART_InitStructure.USART_StopBits = USART_StopBits_1_5;
000164 f44f5040 MOV r0,#0x3000
000168 f8ad0012 STRH r0,[sp,#0x12]
;;;301 USART_InitStructure.USART_Parity = USART_Parity_Even;
00016c f44f6080 MOV r0,#0x400
000170 f8ad0014 STRH r0,[sp,#0x14]
;;;302 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
000174 200c MOVS r0,#0xc
000176 f8ad0016 STRH r0,[sp,#0x16]
00017a 9503 STR r5,[sp,#0xc] ;299
;;;303 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
00017c f8ad4018 STRH r4,[sp,#0x18]
;;;304 USART_Init(USART3, &USART_InitStructure);
000180 a903 ADD r1,sp,#0xc
000182 4630 MOV r0,r6
000184 f7fffffe BL USART_Init
|L4.392|
;;;305 }
;;;306 }
;;;307 }
;;;308 }
000188 b00d ADD sp,sp,#0x34
00018a e8bd83f0 POP {r4-r9,pc}
;;;309
ENDP
00018e 0000 DCW 0x0000
|L4.400|
DCD 0x40004818
|L4.404|
DCD ||.bss||
|L4.408|
DCD ||.data||
AREA ||i.SC_ParityErrorHandler||, CODE, READONLY, ALIGN=2
SC_ParityErrorHandler PROC
;;;186 *******************************************************************************/
;;;187 void SC_ParityErrorHandler(void)
000000 b510 PUSH {r4,lr}
;;;188 {
;;;189 USART_SendData(USART3, SCData);
000002 4806 LDR r0,|L5.28|
000004 7801 LDRB r1,[r0,#0] ; SCData
000006 4c06 LDR r4,|L5.32|
000008 4620 MOV r0,r4
00000a f7fffffe BL USART_SendData
|L5.14|
;;;190 while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
00000e 2140 MOVS r1,#0x40
000010 4620 MOV r0,r4
000012 f7fffffe BL USART_GetFlagStatus
000016 2800 CMP r0,#0
000018 d0f9 BEQ |L5.14|
;;;191 {
;;;192 }
;;;193 }
00001a bd10 POP {r4,pc}
;;;194
ENDP
|L5.28|
DCD ||.data||
|L5.32|
DCD 0x40004800
AREA ||i.SC_PowerCmd||, CODE, READONLY, ALIGN=2
SC_PowerCmd PROC
;;;150 *******************************************************************************/
;;;151 void SC_PowerCmd(FunctionalState NewState)
000000 4a04 LDR r2,|L6.20|
;;;152 {
;;;153 if(NewState != DISABLE)
000002 2800 CMP r0,#0
;;;154 {
;;;155 GPIO_SetBits(GPIO_CMDVCC, SC_CMDVCC);
000004 f04f0140 MOV r1,#0x40
000008 4610 MOV r0,r2
00000a d001 BEQ |L6.16|
00000c f7ffbffe B.W GPIO_SetBits
|L6.16|
;;;156 }
;;;157 else
;;;158 {
;;;159 GPIO_ResetBits(GPIO_CMDVCC, SC_CMDVCC);
000010 f7ffbffe B.W GPIO_ResetBits
;;;160 }
;;;161 }
;;;162
ENDP
|L6.20|
DCD 0x40011000
AREA ||i.SC_Reset||, CODE, READONLY, ALIGN=2
SC_Reset PROC
;;;173 *******************************************************************************/
;;;174 void SC_Reset(BitAction ResetState)
000000 4602 MOV r2,r0
;;;175 {
;;;176 GPIO_WriteBit(GPIO_RESET, SC_RESET, ResetState);
000002 f44f6100 MOV r1,#0x800
000006 4801 LDR r0,|L7.12|
000008 f7ffbffe B.W GPIO_WriteBit
;;;177 }
;;;178
ENDP
|L7.12|
DCD 0x40010c00
AREA ||i.SC_SendData||, CODE, READONLY, ALIGN=2
SC_SendData PROC
;;;320 *******************************************************************************/
;;;321 static void SC_SendData(SC_ADPU_Commands *SC_ADPU, SC_ADPU_Responce *SC_ResponceStatus)
000000 e92d4ff8 PUSH {r3-r11,lr}
;;;322 {
000004 4604 MOV r4,r0
;;;323 u32 i = 0;
000006 2000 MOVS r0,#0
000008 460d MOV r5,r1 ;322
;;;324 u8 locData = 0;
00000a 4601 MOV r1,r0
00000c 9000 STR r0,[sp,#0]
|L8.14|
;;;325
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -