⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smartcard.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;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 + -