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