probe_rs232.txt

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

TXT
727
字号
                  |L1.256|
000100  bd70              POP      {r4-r6,pc}
000102  4c77              LDR      r4,|L1.736|
000104  4877              LDR      r0,|L1.740|
000106  89e1              LDRH     r1,[r4,#0xe]          ;484  ; ProbeRS232_TxBufRdIx
000108  5c45              LDRB     r5,[r0,r1]            ;484
00010a  4628              MOV      r0,r5                 ;485
00010c  f7fffffe          BL       ProbeRS232_Tx1
000110  69a0              LDR      r0,[r4,#0x18]         ;486  ; ProbeRS232_TxCtr
000112  1c40              ADDS     r0,r0,#1              ;486
000114  61a0              STR      r0,[r4,#0x18]         ;486  ; ProbeRS232_TxCtr
000116  7920              LDRB     r0,[r4,#4]            ;487  ; ProbeRS232_TxChkSum
000118  4428              ADD      r0,r0,r5              ;487
00011a  7120              STRB     r0,[r4,#4]            ;487  ; ProbeRS232_TxChkSum
00011c  89e0              LDRH     r0,[r4,#0xe]          ;488  ; ProbeRS232_TxBufRdIx
00011e  1c40              ADDS     r0,r0,#1              ;488
000120  b280              UXTH     r0,r0                 ;488
000122  81e0              STRH     r0,[r4,#0xe]          ;488  ; ProbeRS232_TxBufRdIx
000124  89a1              LDRH     r1,[r4,#0xc]          ;489  ; ProbeRS232_TxLen
000126  4288              CMP      r0,r1                 ;489
000128  d3ea              BCC      |L1.256|
00012a  2009              MOVS     r0,#9                 ;490
00012c  70a0              STRB     r0,[r4,#2]            ;490  ; ProbeRS232_TxState
00012e  2000              MOVS     r0,#0                 ;491
000130  81a0              STRH     r0,[r4,#0xc]          ;491  ; ProbeRS232_TxLen
000132  bd70              POP      {r4-r6,pc}
000134  4c6a              LDR      r4,|L1.736|
000136  7920              LDRB     r0,[r4,#4]            ;497  ; ProbeRS232_TxChkSum
000138  f7fffffe          BL       ProbeRS232_Tx1
00013c  69a0              LDR      r0,[r4,#0x18]         ;498  ; ProbeRS232_TxCtr
00013e  1c40              ADDS     r0,r0,#1              ;498
000140  61a0              STR      r0,[r4,#0x18]         ;498  ; ProbeRS232_TxCtr
000142  200a              MOVS     r0,#0xa               ;499
000144  70a0              STRB     r0,[r4,#2]            ;499  ; ProbeRS232_TxState
000146  bd70              POP      {r4-r6,pc}
000148  202f              MOVS     r0,#0x2f              ;504
00014a  f7fffffe          BL       ProbeRS232_Tx1
00014e  4864              LDR      r0,|L1.736|
000150  6981              LDR      r1,[r0,#0x18]         ;505  ; ProbeRS232_TxCtr
000152  1c49              ADDS     r1,r1,#1              ;505
000154  6181              STR      r1,[r0,#0x18]         ;505  ; ProbeRS232_TxCtr
000156  2100              MOVS     r1,#0                 ;506
000158  7081              STRB     r1,[r0,#2]            ;506  ; ProbeRS232_TxState
00015a  7141              STRB     r1,[r0,#5]            ;507  ; ProbeRS232_TxBufInUse
00015c  69c1              LDR      r1,[r0,#0x1c]         ;508  ; ProbeRS232_TxPktCtr
00015e  1c49              ADDS     r1,r1,#1              ;508
000160  61c1              STR      r1,[r0,#0x1c]         ;508  ; ProbeRS232_TxPktCtr
000162  bd70              POP      {r4-r6,pc}
                  |L1.356|
000164  495e              LDR      r1,|L1.736|
000166  2000              MOVS     r0,#0                 ;513
000168  7088              STRB     r0,[r1,#2]            ;513  ; ProbeRS232_TxState
00016a  70c8              STRB     r0,[r1,#3]            ;514  ; ProbeRS232_TxActiveFlag
00016c  e8bd4070          POP      {r4-r6,lr}            ;515
000170  f7ffbffe          B.W      ProbeRS232_TxIntDis
;;;519    
                          ENDP

                  ProbeRS232_TxStart PROC
;;;666    static  void  ProbeRS232_TxStart (void)
;;;667    {
000174  b510              PUSH     {r4,lr}
;;;668        if (ProbeRS232_TxActiveFlag == DEF_FALSE) {                     /* If no other transmission is in progress              */
000176  485a              LDR      r0,|L1.736|
000178  78c0              LDRB     r0,[r0,#3]  ; ProbeRS232_TxActiveFlag
00017a  2800              CMP      r0,#0
00017c  d105              BNE      |L1.394|
;;;669            ProbeRS232_TxHandler();                                     /*  ... Handle transmit                                 */
00017e  f7fffffe          BL       ProbeRS232_TxHandler
;;;670            ProbeRS232_TxIntEn();                                       /*  ... Enable transmit interrupts                      */
000182  e8bd4010          POP      {r4,lr}
000186  f7ffbffe          B.W      ProbeRS232_TxIntEn
                  |L1.394|
;;;671        }
;;;672    }
00018a  bd10              POP      {r4,pc}
                          ENDP

                  ProbeRS232_ParseRxPkt PROC
;;;545    
;;;546        if (ProbeRS232_TxBufInUse == DEF_TRUE) {                        /* Do cmds only if Tx buffer is free                    */
00018c  4854              LDR      r0,|L1.736|
00018e  7941              LDRB     r1,[r0,#5]  ; ProbeRS232_TxBufInUse
000190  2901              CMP      r1,#1
000192  d101              BNE      |L1.408|
;;;547            return (0);
000194  2000              MOVS     r0,#0
;;;548        }
;;;549    
;;;550        ProbeRS232_TxBufInUse = DEF_TRUE;
;;;551        temp                  = ProbeCom_ParseRxPkt((void *)ProbeRS232_RxBuf,
;;;552                                                    (void *)ProbeRS232_TxBuf,
;;;553                                                            ProbeRS232_RxLen,
;;;554                                                            PROBE_RS232_TX_BUF_SIZE);
;;;555    
;;;556        return (temp);
;;;557    }
000196  4770              BX       lr
                  |L1.408|
000198  2101              MOVS     r1,#1                 ;550
00019a  7141              STRB     r1,[r0,#5]            ;550  ; ProbeRS232_TxBufInUse
00019c  4951              LDR      r1,|L1.740|
00019e  8902              LDRH     r2,[r0,#8]            ;551  ; ProbeRS232_RxLen
0001a0  2340              MOVS     r3,#0x40              ;551
0001a2  f1a10040          SUB      r0,r1,#0x40           ;551
0001a6  f7ffbffe          B.W      ProbeCom_ParseRxPkt
;;;558    
                          ENDP

                  ProbeRS232_Task PROC
;;;253    void  ProbeRS232_Task (void *p_arg)
;;;254    {
0001aa  b510              PUSH     {r4,lr}
0001ac  4c4c              LDR      r4,|L1.736|
                  |L1.430|
;;;255        CPU_INT16U     len;
;;;256    
;;;257    
;;;258        (void)p_arg;
;;;259    
;;;260        while (DEF_TRUE) {
;;;261            ProbeRS232_OS_Pend();                                       /* Wait for a packet to be received                     */
0001ae  f7fffffe          BL       ProbeRS232_OS_Pend
;;;262    
;;;263            len = ProbeRS232_ParseRxPkt();                              /* Parse packet and formulate a response                */
0001b2  f7fffffe          BL       ProbeRS232_ParseRxPkt
;;;264    
;;;265            if (len > 0) {                                              /* If we have a response                                */
0001b6  2800              CMP      r0,#0
0001b8  d0f9              BEQ      |L1.430|
;;;266                ProbeRS232_TxLen = len;
0001ba  81a0              STRH     r0,[r4,#0xc]  ; ProbeRS232_TxLen
;;;267                ProbeRS232_TxStart();
0001bc  f7fffffe          BL       ProbeRS232_TxStart
0001c0  e7f5              B        |L1.430|
;;;268            }
;;;269        }
;;;270    }
;;;271    #endif
                          ENDP

                  ProbeRS232_RxPkt PROC
;;;582    #if (PROBE_RS232_PARSE_TASK > 0)
;;;583        ProbeRS232_OS_Post();                                           /* We have a whole packet, signal task to parse it      */
0001c2  f7ffbffe          B.W      ProbeRS232_OS_Post
;;;584    
;;;585    
;;;586    
;;;587    #else
;;;588    
;;;589    
;;;590    
;;;591    #if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
;;;592        CPU_SR      cpu_sr = 0;
;;;593    #endif
;;;594        CPU_INT16U  len;
;;;595    
;;;596    
;;;597        len = ProbeRS232_ParseRxPkt();                                  /* We have a whole packet, parse it                     */
;;;598        if (len > 0) {
;;;599            CPU_CRITICAL_ENTER();
;;;600            ProbeRS232_TxLen = len;
;;;601            ProbeRS232_TxStart();
;;;602            CPU_CRITICAL_EXIT();
;;;603        }
;;;604    #endif
;;;605    }
;;;606    
                          ENDP

                  ProbeRS232_RxStoINT8U PROC
;;;621    {
;;;622        if (ProbeRS232_RxBufWrIx < PROBE_RS232_RX_BUF_SIZE) {
0001c6  4a46              LDR      r2,|L1.736|
0001c8  8951              LDRH     r1,[r2,#0xa]  ; ProbeRS232_RxBufWrIx
0001ca  2940              CMP      r1,#0x40
0001cc  d203              BCS      |L1.470|
;;;623            ProbeRS232_RxBuf[ProbeRS232_RxBufWrIx++] = rx_data;
0001ce  1c4b              ADDS     r3,r1,#1
0001d0  8153              STRH     r3,[r2,#0xa]  ; ProbeRS232_RxBufWrIx
0001d2  4a45              LDR      r2,|L1.744|
0001d4  5450              STRB     r0,[r2,r1]
                  |L1.470|
;;;624        }
;;;625    }
0001d6  4770              BX       lr
;;;626    
                          ENDP

                  ProbeRS232_RxBufClr PROC
;;;641    {
;;;642        ProbeRS232_RxBufWrIx = 0;
0001d8  4941              LDR      r1,|L1.736|
0001da  2000              MOVS     r0,#0
0001dc  8148              STRH     r0,[r1,#0xa]  ; ProbeRS232_RxBufWrIx
;;;643    }
0001de  4770              BX       lr
;;;644    
                          ENDP

                  ProbeRS232_RxHandler PROC
;;;294    void  ProbeRS232_RxHandler (CPU_INT08U rx_data)
;;;295    {
0001e0  b510              PUSH     {r4,lr}
0001e2  4604              MOV      r4,r0
;;;296        ProbeRS232_RxCtr++;
0001e4  483e              LDR      r0,|L1.736|
0001e6  6901              LDR      r1,[r0,#0x10]  ; ProbeRS232_RxCtr
0001e8  1c49              ADDS     r1,r1,#1
0001ea  6101              STR      r1,[r0,#0x10]  ; ProbeRS232_RxCtr
;;;297    
;;;298        switch (ProbeRS232_RxState) {
0001ec  7800              LDRB     r0,[r0,#0]  ; ProbeRS232_RxState
0001ee  280b              CMP      r0,#0xb
0001f0  d272              BCS      |L1.728|
0001f2  e8dff000          TBB      [pc,r0]
0001f6  060e1822          DCB      0x06,0x0e,0x18,0x22
0001fa  2c324549          DCB      0x2c,0x32,0x45,0x49
0001fe  4d5d6400          DCB      0x4d,0x5d,0x64,0x00
;;;299    
;;;300            case PROBE_RS232_RX_STATE_SD0:                              /* Receive the start first  start delimiter (SD0)       */
;;;301                 if (rx_data == PROBE_RS232_PROTOCOL_RX_SD0) {
000202  2c75              CMP      r4,#0x75
000204  d10a              BNE      |L1.540|
;;;302                     ProbeRS232_RxState = PROBE_RS232_RX_STATE_SD1;
000206  4936              LDR      r1,|L1.736|
000208  2001              MOVS     r0,#1
00020a  7008              STRB     r0,[r1,#0]  ; ProbeRS232_RxState
;;;303                     ProbeRS232_RxBufClr();
00020c  e8bd4010          POP      {r4,lr}
000210  e7fe              B        ProbeRS232_RxBufClr
;;;304                 }
;;;305                 break;
;;;306    
;;;307            case PROBE_RS232_RX_STATE_SD1:                              /* Receive the start second start delimiter (SD1)       */
;;;308                 if (rx_data == PROBE_RS232_PROTOCOL_RX_SD1) {
000212  2c43              CMP      r4,#0x43
000214  d103              BNE      |L1.542|
;;;309                     ProbeRS232_RxState = PROBE_RS232_RX_STATE_SD2;
000216  4932              LDR      r1,|L1.736|
000218  2002              MOVS     r0,#2
00021a  7008              STRB     r0,[r1,#0]  ; ProbeRS232_RxState
                  |L1.540|

⌨️ 快捷键说明

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