probe_rs232.txt

来自「针对STM32F103的UCOS移植」· 文本 代码 · 共 727 行 · 第 1/3 页

TXT
727
字号
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 942] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\rvmdk\probe_rs232.o --depend=.\rvmdk\probe_rs232.d --device=DARMSTM --apcs=interwork -O1 -Otime -I. -I..\BSP -I..\..\..\..\..\uCOS-II\Ports\arm-cortex-m3\Generic\RealView -I..\..\..\..\..\uCOS-II\Source -I..\..\..\..\..\CPU\ST\STM32\inc -I..\..\..\..\..\uC-CPU -I..\..\..\..\..\uC-CPU\Arm-Cortex-M3\RealView -I..\..\..\..\..\uC-LIB -I..\..\..\..\..\uC-Probe\Target\Plugins\uCOS-II -I..\..\..\..\..\uC-Probe\Target\Communication\Generic\Source -I..\..\..\..\..\uC-Probe\Target\Communication\Generic\RS-232\Ports\ST\STM32 -I..\..\..\..\..\uC-Probe\Target\Communication\Generic\RS-232\Source -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\..\..\..\uC-Probe\Target\Communication\Generic\RS-232\Source\probe_rs232.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  ProbeRS232_Init PROC
;;;215    void  ProbeRS232_Init (CPU_INT32U baud_rate)
;;;216    {
000000  b510              PUSH     {r4,lr}
000002  4604              MOV      r4,r0
;;;217        ProbeRS232_RxState      = PROBE_RS232_RX_STATE_SD0;             /* Setup Rx and Tx state machines                       */
000004  49b6              LDR      r1,|L1.736|
000006  2000              MOVS     r0,#0
000008  7008              STRB     r0,[r1,#0]  ; ProbeRS232_RxState
;;;218        ProbeRS232_TxState      = PROBE_RS232_TX_STATE_SD0;
00000a  7088              STRB     r0,[r1,#2]  ; ProbeRS232_TxState
;;;219    
;;;220        ProbeRS232_TxLen        = 0;
00000c  8188              STRH     r0,[r1,#0xc]  ; ProbeRS232_TxLen
;;;221        ProbeRS232_TxActiveFlag = DEF_FALSE;
00000e  70c8              STRB     r0,[r1,#3]  ; ProbeRS232_TxActiveFlag
;;;222        ProbeRS232_TxBufInUse   = DEF_FALSE;
000010  7148              STRB     r0,[r1,#5]  ; ProbeRS232_TxBufInUse
;;;223    
;;;224    #if (PROBE_RS232_PARSE_TASK > 0)
;;;225        ProbeRS232_OS_Init();
000012  f7fffffe          BL       ProbeRS232_OS_Init
;;;226    #endif
;;;227    
;;;228        ProbeRS232_InitTarget(baud_rate);                               /* Initialize target specific code                      */
000016  4620              MOV      r0,r4
000018  e8bd4010          POP      {r4,lr}
00001c  f7ffbffe          B.W      ProbeRS232_InitTarget
;;;229    }
;;;230    
                          ENDP

                  ProbeRS232_TxHandler PROC
;;;413    void  ProbeRS232_TxHandler (void)
;;;414    {
000020  b570              PUSH     {r4-r6,lr}
;;;415        CPU_INT08U  tx_data;
;;;416    
;;;417    
;;;418        switch (ProbeRS232_TxState) {
000022  48af              LDR      r0,|L1.736|
000024  7880              LDRB     r0,[r0,#2]  ; ProbeRS232_TxState
000026  280b              CMP      r0,#0xb
000028  f080809c          BCS.W    |L1.356|
00002c  e8dff000          TBB      [pc,r0]
000030  061b252f          DCB      0x06,0x1b,0x25,0x2f
000034  3946555f          DCB      0x39,0x46,0x55,0x5f
000038  69828c00          DCB      0x69,0x82,0x8c,0x00
;;;419            case PROBE_RS232_TX_STATE_SD0:
;;;420                 if (ProbeRS232_TxLen > 0) {                            /* If packet is waiting to be sent                      */
00003c  4ca8              LDR      r4,|L1.736|
00003e  89a0              LDRH     r0,[r4,#0xc]  ; ProbeRS232_TxLen
000040  b158              CBZ      r0,|L1.90|
;;;421                     ProbeRS232_Tx1(PROBE_RS232_PROTOCOL_TX_SD0);       /*  ... Transmit start first  start delimiter (SD0)     */
000042  2075              MOVS     r0,#0x75
000044  f7fffffe          BL       ProbeRS232_Tx1
;;;422                     ProbeRS232_TxCtr++;                                /*  ... Increment Tx counter                            */
000048  69a0              LDR      r0,[r4,#0x18]  ; ProbeRS232_TxCtr
00004a  1c40              ADDS     r0,r0,#1
00004c  61a0              STR      r0,[r4,#0x18]  ; ProbeRS232_TxCtr
;;;423                     ProbeRS232_TxActiveFlag = DEF_TRUE;                /*  ... Transmit in process                             */
00004e  2001              MOVS     r0,#1
000050  70e0              STRB     r0,[r4,#3]  ; ProbeRS232_TxActiveFlag
;;;424                     ProbeRS232_TxState      = PROBE_RS232_TX_STATE_SD1;
000052  70a0              STRB     r0,[r4,#2]  ; ProbeRS232_TxState
;;;425                     ProbeRS232_TxBufRdIx    = 0;
000054  2000              MOVS     r0,#0
000056  81e0              STRH     r0,[r4,#0xe]  ; ProbeRS232_TxBufRdIx
;;;426    
;;;427                 } else {                                               /* If no packet is waiting to be sent                   */
;;;428                     ProbeRS232_TxActiveFlag = DEF_FALSE;               /*  ... Transmission not active                         */
;;;429                     ProbeRS232_TxIntDis();                             /*  ... Disable transmit interrupts                     */
;;;430                 }
;;;431                 break;
;;;432    
;;;433    
;;;434            case PROBE_RS232_TX_STATE_SD1:                              /* Transmit start second start delimiter (SD1)          */
;;;435                 ProbeRS232_Tx1(PROBE_RS232_PROTOCOL_TX_SD1);
;;;436                 ProbeRS232_TxCtr++;                                    /*  ... Increment Tx counter                            */
;;;437                 ProbeRS232_TxState = PROBE_RS232_TX_STATE_SD2;
;;;438                 break;
;;;439    
;;;440            case PROBE_RS232_TX_STATE_SD2:                              /* Transmit start third  start delimiter (SD2)          */
;;;441                 ProbeRS232_Tx1(PROBE_RS232_PROTOCOL_TX_SD2);
;;;442                 ProbeRS232_TxCtr++;                                    /*  ... Increment Tx counter                            */
;;;443                 ProbeRS232_TxState = PROBE_RS232_TX_STATE_SD3;
;;;444                 break;
;;;445    
;;;446            case PROBE_RS232_TX_STATE_SD3:                              /* Transmit start fourth start delimiter (SD3)          */
;;;447                 ProbeRS232_Tx1(PROBE_RS232_PROTOCOL_TX_SD3);
;;;448                 ProbeRS232_TxCtr++;                                    /*  ... Increment Tx counter                            */
;;;449                 ProbeRS232_TxState = PROBE_RS232_TX_STATE_LEN1;
;;;450                 break;
;;;451    
;;;452    
;;;453            case PROBE_RS232_TX_STATE_LEN1:                             /* Transmit first  length byte                          */
;;;454                 tx_data             = ProbeRS232_TxLen & 0xFF;
;;;455                 ProbeRS232_Tx1(tx_data);
;;;456                 ProbeRS232_TxCtr++;                                    /*  ... Increment Tx counter                            */
;;;457                 ProbeRS232_TxState  = PROBE_RS232_TX_STATE_LEN2;
;;;458                 ProbeRS232_TxChkSum = tx_data;
;;;459                 break;
;;;460    
;;;461            case PROBE_RS232_TX_STATE_LEN2:                             /* Transmit second length byte                          */
;;;462                 tx_data              = ProbeRS232_TxLen >> 8;
;;;463                 ProbeRS232_Tx1(tx_data);
;;;464                 ProbeRS232_TxCtr++;                                    /*  ... Increment Tx counter                            */
;;;465                 ProbeRS232_TxState   = PROBE_RS232_TX_STATE_PAD1;
;;;466                 ProbeRS232_TxChkSum += tx_data;
;;;467                 break;
;;;468    
;;;469    
;;;470            case PROBE_RS232_TX_STATE_PAD1:                             /* Transmit first  padding byte                         */
;;;471                 ProbeRS232_Tx1(0);
;;;472                 ProbeRS232_TxCtr++;                                    /*  ... Increment Tx counter                            */
;;;473                 ProbeRS232_TxState = PROBE_RS232_TX_STATE_PAD2;
;;;474                 break;
;;;475    
;;;476            case PROBE_RS232_TX_STATE_PAD2:                             /* Transmit second padding byte                         */
;;;477                 ProbeRS232_Tx1(0);
;;;478                 ProbeRS232_TxCtr++;                                    /*  ... Increment Tx counter                            */
;;;479                 ProbeRS232_TxState = PROBE_RS232_TX_STATE_DATA;
;;;480                 break;
;;;481    
;;;482    
;;;483            case PROBE_RS232_TX_STATE_DATA:                             /* Transmit data                                        */
;;;484                 tx_data = ProbeRS232_TxBuf[ProbeRS232_TxBufRdIx];
;;;485                 ProbeRS232_Tx1(tx_data);
;;;486                 ProbeRS232_TxCtr++;                                    /*  ... Increment Tx counter                            */
;;;487                 ProbeRS232_TxChkSum += tx_data;
;;;488                 ProbeRS232_TxBufRdIx++;
;;;489                 if (ProbeRS232_TxBufRdIx >= ProbeRS232_TxLen) {        /* ... If all data has been sent                        */
;;;490                     ProbeRS232_TxState = PROBE_RS232_TX_STATE_CHKSUM;
;;;491                     ProbeRS232_TxLen   = 0;
;;;492                 }
;;;493                 break;
;;;494    
;;;495    
;;;496            case PROBE_RS232_TX_STATE_CHKSUM:                           /* Transmit checksum                                    */
;;;497                 ProbeRS232_Tx1(ProbeRS232_TxChkSum);
;;;498                 ProbeRS232_TxCtr++;                                    /*  ... Increment Tx counter                            */
;;;499                 ProbeRS232_TxState = PROBE_RS232_TX_STATE_ED;
;;;500                 break;
;;;501    
;;;502    
;;;503            case PROBE_RS232_TX_STATE_ED:                               /* Transmit end delimiter                               */
;;;504                 ProbeRS232_Tx1(PROBE_RS232_PROTOCOL_TX_ED);
;;;505                 ProbeRS232_TxCtr++;
;;;506                 ProbeRS232_TxState    = PROBE_RS232_TX_STATE_SD0;
;;;507                 ProbeRS232_TxBufInUse = DEF_FALSE;
;;;508                 ProbeRS232_TxPktCtr++;
;;;509                 break;
;;;510    
;;;511    
;;;512            default:
;;;513                 ProbeRS232_TxState      = PROBE_RS232_TX_STATE_SD0;
;;;514                 ProbeRS232_TxActiveFlag = DEF_FALSE;
;;;515                 ProbeRS232_TxIntDis();                                 /* No more data to send, disable Tx interrupts          */
;;;516                 break;
;;;517        }
;;;518    }
000058  bd70              POP      {r4-r6,pc}
                  |L1.90|
00005a  2000              MOVS     r0,#0                 ;428
00005c  70e0              STRB     r0,[r4,#3]            ;428  ; ProbeRS232_TxActiveFlag
00005e  e8bd4070          POP      {r4-r6,lr}            ;429
000062  f7ffbffe          B.W      ProbeRS232_TxIntDis
000066  2043              MOVS     r0,#0x43              ;435
000068  f7fffffe          BL       ProbeRS232_Tx1
00006c  489c              LDR      r0,|L1.736|
00006e  6981              LDR      r1,[r0,#0x18]         ;436  ; ProbeRS232_TxCtr
000070  1c49              ADDS     r1,r1,#1              ;436
000072  6181              STR      r1,[r0,#0x18]         ;436  ; ProbeRS232_TxCtr
000074  2102              MOVS     r1,#2                 ;437
000076  7081              STRB     r1,[r0,#2]            ;437  ; ProbeRS232_TxState
000078  bd70              POP      {r4-r6,pc}
00007a  2050              MOVS     r0,#0x50              ;441
00007c  f7fffffe          BL       ProbeRS232_Tx1
000080  4897              LDR      r0,|L1.736|
000082  6981              LDR      r1,[r0,#0x18]         ;442  ; ProbeRS232_TxCtr
000084  1c49              ADDS     r1,r1,#1              ;442
000086  6181              STR      r1,[r0,#0x18]         ;442  ; ProbeRS232_TxCtr
000088  2103              MOVS     r1,#3                 ;443
00008a  7081              STRB     r1,[r0,#2]            ;443  ; ProbeRS232_TxState
00008c  bd70              POP      {r4-r6,pc}
00008e  2072              MOVS     r0,#0x72              ;447
000090  f7fffffe          BL       ProbeRS232_Tx1
000094  4892              LDR      r0,|L1.736|
000096  6981              LDR      r1,[r0,#0x18]         ;448  ; ProbeRS232_TxCtr
000098  1c49              ADDS     r1,r1,#1              ;448
00009a  6181              STR      r1,[r0,#0x18]         ;448  ; ProbeRS232_TxCtr
00009c  2104              MOVS     r1,#4                 ;449
00009e  7081              STRB     r1,[r0,#2]            ;449  ; ProbeRS232_TxState
0000a0  bd70              POP      {r4-r6,pc}
0000a2  4c8f              LDR      r4,|L1.736|
0000a4  89a0              LDRH     r0,[r4,#0xc]          ;454  ; ProbeRS232_TxLen
0000a6  b2c5              UXTB     r5,r0                 ;454
0000a8  4628              MOV      r0,r5                 ;455
0000aa  f7fffffe          BL       ProbeRS232_Tx1
0000ae  69a0              LDR      r0,[r4,#0x18]         ;456  ; ProbeRS232_TxCtr
0000b0  1c40              ADDS     r0,r0,#1              ;456
0000b2  61a0              STR      r0,[r4,#0x18]         ;456  ; ProbeRS232_TxCtr
0000b4  2005              MOVS     r0,#5                 ;457
0000b6  70a0              STRB     r0,[r4,#2]            ;457  ; ProbeRS232_TxState
0000b8  7125              STRB     r5,[r4,#4]            ;458  ; ProbeRS232_TxChkSum
0000ba  bd70              POP      {r4-r6,pc}
0000bc  4c88              LDR      r4,|L1.736|
0000be  89a0              LDRH     r0,[r4,#0xc]          ;462  ; ProbeRS232_TxLen
0000c0  0a05              LSRS     r5,r0,#8              ;462
0000c2  4628              MOV      r0,r5                 ;463
0000c4  f7fffffe          BL       ProbeRS232_Tx1
0000c8  69a0              LDR      r0,[r4,#0x18]         ;464  ; ProbeRS232_TxCtr
0000ca  1c40              ADDS     r0,r0,#1              ;464
0000cc  61a0              STR      r0,[r4,#0x18]         ;464  ; ProbeRS232_TxCtr
0000ce  2006              MOVS     r0,#6                 ;465
0000d0  70a0              STRB     r0,[r4,#2]            ;465  ; ProbeRS232_TxState
0000d2  7920              LDRB     r0,[r4,#4]            ;466  ; ProbeRS232_TxChkSum
0000d4  4428              ADD      r0,r0,r5              ;466
0000d6  7120              STRB     r0,[r4,#4]            ;466  ; ProbeRS232_TxChkSum
0000d8  bd70              POP      {r4-r6,pc}
0000da  2000              MOVS     r0,#0                 ;471
0000dc  f7fffffe          BL       ProbeRS232_Tx1
0000e0  487f              LDR      r0,|L1.736|
0000e2  6981              LDR      r1,[r0,#0x18]         ;472  ; ProbeRS232_TxCtr
0000e4  1c49              ADDS     r1,r1,#1              ;472
0000e6  6181              STR      r1,[r0,#0x18]         ;472  ; ProbeRS232_TxCtr
0000e8  2107              MOVS     r1,#7                 ;473
0000ea  7081              STRB     r1,[r0,#2]            ;473  ; ProbeRS232_TxState
0000ec  bd70              POP      {r4-r6,pc}
0000ee  2000              MOVS     r0,#0                 ;477
0000f0  f7fffffe          BL       ProbeRS232_Tx1
0000f4  487a              LDR      r0,|L1.736|
0000f6  6981              LDR      r1,[r0,#0x18]         ;478  ; ProbeRS232_TxCtr
0000f8  1c49              ADDS     r1,r1,#1              ;478
0000fa  6181              STR      r1,[r0,#0x18]         ;478  ; ProbeRS232_TxCtr
0000fc  2108              MOVS     r1,#8                 ;479
0000fe  7081              STRB     r1,[r0,#2]            ;479  ; ProbeRS232_TxState

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?