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 + -
显示快捷键?