📄 bsp_uart.txt
字号:
;;;291 {
;;;292 return ( len );
;;;293 }
;;;294 }
;;;295 return ( len );
;;;296 }
|L3.72|
000048 b007 ADD sp,sp,#0x1c
00004a bcf0 POP {r4-r7}
00004c bc08 POP {r3}
00004e 4718 BX r3
|L3.80|
000050 f7ff fffe BL __rt_ctype_table ;278
000054 6800 LDR r0,[r0,#0] ;278
000056 7821 LDRB r1,[r4,#0] ;278
000058 5c40 LDRB r0,[r0,r1] ;278
00005a 213e MOVS r1,#0x3e ;278
00005c 4208 TST r0,r1 ;278
00005e d005 BEQ |L3.108| ;278
000060 1c64 ADDS r4,r4,#1 ;280
000062 9801 LDR r0,[sp,#4] ;281
000064 1c40 ADDS r0,r0,#1 ;281
000066 0400 LSLS r0,r0,#16 ;281
000068 0c00 LSRS r0,r0,#16 ;281
00006a 9001 STR r0,[sp,#4] ;281
|L3.108|
00006c 9801 LDR r0,[sp,#4] ;283
00006e 42a8 CMP r0,r5 ;283
000070 db01 BLT |L3.118| ;283
000072 9801 LDR r0,[sp,#4] ;284
000074 e7e8 B |L3.72| ;284
|L3.118|
000076 9803 LDR r0,[sp,#0xc] ;284
000078 f7ff fffe BL query_rxdbuf_received_byte ;284
00007c 2800 CMP r0,#0 ;284
00007e d1d4 BNE |L3.42| ;284
000080 9801 LDR r0,[sp,#4] ;286
000082 42a8 CMP r0,r5 ;286
000084 da03 BGE |L3.142| ;286
000086 200a MOVS r0,#0xa ;288
000088 f7ff fffe BL os_dly_wait ;288
00008c e001 B |L3.146| ;288
|L3.142|
00008e 9801 LDR r0,[sp,#4] ;292
000090 e7da B |L3.72| ;292
|L3.146|
000092 1c78 ADDS r0,r7,#1 ;267
000094 0407 LSLS r7,r0,#16 ;267
000096 0c3f LSRS r7,r7,#16 ;267
|L3.152|
000098 9802 LDR r0,[sp,#8] ;267
00009a 4287 CMP r7,r0 ;267
00009c dbc4 BLT |L3.40| ;267
00009e 9801 LDR r0,[sp,#4] ;295
0000a0 e7d2 B |L3.72| ;295
ENDP
AREA ||.text.260||, CODE, READONLY, ALIGN=2
UART_rxd_data PROC
;;;320 void UART_rxd_data( void )
;;;321 {
000000 b41e PUSH {r1-r4}
;;;322 UART_TypeDef *UART_x[3] =
000002 4935 LDR r1,|L4.216|
000004 466c MOV r4,sp
000006 c90d LDM r1!,{r0,r2,r3}
000008 c40d STM r4!,{r0,r2,r3}
;;;323 {
;;;324 UART0, UART1, UART2
;;;325 };
;;;326 /*
;;;327 u8 sc752_channel[2] =
;;;328 {
;;;329 SC752_UARTA, SC752_UARTB
;;;330 };
;;;331 */
;;;332 u16 i;
;;;333
;;;334 //for ( i = 0; i < 5; i += 1 )
;;;335 for ( i = 0; i < 3; i += 1 )
00000a 2000 MOVS r0,#0
00000c e060 B |L4.208|
;;;336 {
;;;337 if ( i < 3 )
|L4.14|
00000e 2803 CMP r0,#3
000010 da5b BGE |L4.202|
;;;338 {
;;;339 if ( ( UART_x[i]->SR & ( UART_RxHalfFull | UART_RxBufFull ) ) )//UART_TimeOutIdle
000012 0081 LSLS r1,r0,#2
000014 466a MOV r2,sp
000016 5851 LDR r1,[r2,r1]
000018 8a89 LDRH r1,[r1,#0x14]
00001a 22ff MOVS r2,#0xff
00001c 1c92 ADDS r2,r2,#2
00001e 4211 TST r1,r2
000020 d053 BEQ |L4.202|
;;;340 {
;;;341 //LED_COM_ON();
;;;342 UART_RXD_buf[i].msg[UART_RXD_buf[i].in] = ( u8 )UART_x[i]->RxBUFR;
000022 0081 LSLS r1,r0,#2
000024 466a MOV r2,sp
000026 5851 LDR r1,[r2,r1]
000028 8909 LDRH r1,[r1,#8]
00002a 060a LSLS r2,r1,#24
00002c 0e12 LSRS r2,r2,#24
00002e 0281 LSLS r1,r0,#10
000030 1809 ADDS r1,r1,r0
000032 0089 LSLS r1,r1,#2
000034 4b29 LDR r3,|L4.220|
000036 18c9 ADDS r1,r1,r3
000038 1d09 ADDS r1,r1,#4
00003a 0283 LSLS r3,r0,#10
00003c 181b ADDS r3,r3,r0
00003e 009b LSLS r3,r3,#2
000040 4c26 LDR r4,|L4.220|
000042 5ae3 LDRH r3,[r4,r3]
000044 54ca STRB r2,[r1,r3]
;;;343 UART_RXD_buf[i].in += 1;
000046 0281 LSLS r1,r0,#10
000048 1809 ADDS r1,r1,r0
00004a 0089 LSLS r1,r1,#2
00004c 0022 MOVS r2,r4
00004e 5a51 LDRH r1,[r2,r1]
000050 1c49 ADDS r1,r1,#1
000052 0282 LSLS r2,r0,#10
000054 1812 ADDS r2,r2,r0
000056 0092 LSLS r2,r2,#2
000058 0023 MOVS r3,r4
00005a 5299 STRH r1,[r3,r2]
;;;344 UART_RXD_buf[i].in %= MAX_UART_RXDBUF_SIZE;
00005c 0282 LSLS r2,r0,#10
00005e 1812 ADDS r2,r2,r0
000060 0092 LSLS r2,r2,#2
000062 5a99 LDRH r1,[r3,r2]
000064 17ca ASRS r2,r1,#31
000066 0d12 LSRS r2,r2,#20
000068 1852 ADDS r2,r2,r1
00006a 1312 ASRS r2,r2,#12
00006c 0312 LSLS r2,r2,#12
00006e 1a8a SUBS r2,r1,r2
000070 0283 LSLS r3,r0,#10
000072 181b ADDS r3,r3,r0
000074 009b LSLS r3,r3,#2
000076 52e2 STRH r2,[r4,r3]
;;;345 if ( UART_RXD_buf[i].in == UART_RXD_buf[i].out )
000078 0281 LSLS r1,r0,#10
00007a 1809 ADDS r1,r1,r0
00007c 0089 LSLS r1,r1,#2
00007e 0022 MOVS r2,r4
000080 5a51 LDRH r1,[r2,r1]
000082 0282 LSLS r2,r0,#10
000084 1812 ADDS r2,r2,r0
000086 0092 LSLS r2,r2,#2
000088 0023 MOVS r3,r4
00008a 18d2 ADDS r2,r2,r3
00008c 8852 LDRH r2,[r2,#2]
00008e 4291 CMP r1,r2
000090 d11b BNE |L4.202|
;;;346 {
;;;347 UART_RXD_buf[i].out += 1;
000092 0281 LSLS r1,r0,#10
000094 1809 ADDS r1,r1,r0
000096 0089 LSLS r1,r1,#2
000098 001a MOVS r2,r3
00009a 1889 ADDS r1,r1,r2
00009c 8849 LDRH r1,[r1,#2]
00009e 1c49 ADDS r1,r1,#1
0000a0 0282 LSLS r2,r0,#10
0000a2 1812 ADDS r2,r2,r0
0000a4 0092 LSLS r2,r2,#2
0000a6 18d2 ADDS r2,r2,r3
0000a8 8051 STRH r1,[r2,#2]
;;;348 UART_RXD_buf[i].out %= MAX_UART_RXDBUF_SIZE;
0000aa 0282 LSLS r2,r0,#10
0000ac 1812 ADDS r2,r2,r0
0000ae 0092 LSLS r2,r2,#2
0000b0 18d2 ADDS r2,r2,r3
0000b2 8851 LDRH r1,[r2,#2]
0000b4 17ca ASRS r2,r1,#31
0000b6 0d12 LSRS r2,r2,#20
0000b8 1852 ADDS r2,r2,r1
0000ba 1312 ASRS r2,r2,#12
0000bc 0312 LSLS r2,r2,#12
0000be 1a8a SUBS r2,r1,r2
0000c0 0283 LSLS r3,r0,#10
0000c2 181b ADDS r3,r3,r0
0000c4 009b LSLS r3,r3,#2
0000c6 191b ADDS r3,r3,r4
0000c8 805a STRH r2,[r3,#2]
|L4.202|
0000ca 1c41 ADDS r1,r0,#1 ;335
0000cc 0408 LSLS r0,r1,#16 ;335
0000ce 0c00 LSRS r0,r0,#16 ;335
|L4.208|
0000d0 2803 CMP r0,#3 ;335
0000d2 db9c BLT |L4.14| ;335
;;;349 }
;;;350 //LED_COM_OFF();
;;;351 }
;;;352 }
;;;353 /*
;;;354 else
;;;355 {
;;;356 u8 rxlvl, reg, j;
;;;357 u32 tmo;
;;;358
;;;359 os_mut_wait( MUT_SC16is752, 0xffff );
;;;360 rxlvl = ReadSC752Reg( SC752_RXLVL, sc752_channel[i - 3] );
;;;361 reg = SC752_RHR;
;;;362 reg <<= 3;
;;;363 reg |= 0x80;
;;;364 reg |= sc752_channel[i - 3];
;;;365 //LED_COM_ON();
;;;366 OUT_752_CS( 0 );
;;;367 BPSI_DataSendReceive( reg );
;;;368
;;;369 // ========================= <<<<<<<< For TCP Protocl Stack >>>>>>> ========================= //
;;;370 if (tcpPS_IsModemNeedInitialization ()) {
;;;371 for ( j = 0; j < rxlvl; j++ )
;;;372 {
;;;373 UART_RXD_buf[i].msg[UART_RXD_buf[i].in] = BPSI_DataSendReceive( reg );
;;;374 UART_RXD_buf[i].in += 1;
;;;375 UART_RXD_buf[i].in %= MAX_UART_RXDBUF_SIZE;
;;;376 if ( UART_RXD_buf[i].in == UART_RXD_buf[i].out )
;;;377 {
;;;378 UART_RXD_buf[i].out += 1;
;;;379 UART_RXD_buf[i].out %= MAX_UART_RXDBUF_SIZE;
;;;380 }
;;;381 }
;;;382 }
;;;383 else {
;;;384 for ( j = 0; j < rxlvl; j++ ) {
;;;385 com_getcharFromUART (BPSI_DataSendReceive (reg));
;;;386 }
;;;387 }
;;;388 // ============================================ <<<<<<< Modified by likazhou on 07-04-24>>>>>>> //
;;;389
;;;390 tmo = 10000000;
;;;391 while ( BSPI1->CSR2 & BSPI_TFNE )
;;;392 {
;;;393 Clear_WDT( );
;;;394 tmo -= 1;
;;;395 if(tmo == 0)
;;;396 break;
;;;397 }
;;;398 //LED_COM_OFF();
;;;399 OUT_752_CS( 1 );
;;;400 os_mut_release( MUT_SC16is752 );
;;;401 }
;;;402 */
;;;403 }
;;;404 }
0000d4 bc1e POP {r1-r4}
0000d6 4770 BX lr
|L4.216|
0000d8 00000018 DCD ||.constdata.1|| + 24
|L4.220|
0000dc 00000000 DCD UART_RXD_buf
ENDP
AREA ||.text.269||, CODE, READONLY, ALIGN=2
RS485_MUT_wait PROC
;;;434 void RS485_MUT_wait(u8 port)
;;;435 {
000000 b510 PUSH {r4,lr}
000002 0004 MOVS r4,r0
;;;436 if(port == UART_RS485_1)
000004 2c01 CMP r4,#1
000006 d104 BNE |L5.18|
;;;437 os_mut_wait(MUT_RS485_1, 0xffff);
000008 4906 LDR r1,|L5.36|
00000a 4807 LDR r0,|L5.40|
00000c f7ff fffe BL os_mut_wait
000010 e005 B |L5.30|
;;;438 else if(port == UART_RS485_2)
|L5.18|
000012 2c02 CMP r4,#2
000014 d103 BNE |L5.30|
;;;439 os_mut_wait(MUT_RS485_2, 0xffff);
000016 4903 LDR r1,|L5.36|
000018 4804 LDR r0,|L5.44|
00001a f7ff fffe BL os_mut_wait
;;;440 }
|L5.30|
00001e bc10 POP {r4}
000020 bc08 POP {r3}
000022 4718 BX r3
|L5.36|
000024 0000ffff DCD 0x0000ffff
|L5.40|
000028 00000000 DCD MUT_RS485_1
|L5.44|
00002c 00000000 DCD MUT_RS485_2
ENDP
AREA ||.text.278||, CODE, READONLY, ALIGN=2
RS485_MUT_release PROC
;;;442 void RS485_MUT_release(u8 port)
;;;443 {
000000 b510 PUSH {r4,lr}
000002 0004 MOVS r4,r0
;;;444 if(port == UART_RS485_1)
000004 2c01 CMP r4,#1
000006 d103 BNE |L6.16|
;;;445 os_mut_release(MUT_RS485_1);
000008 4805 LDR r0,|L6.32|
00000a f7ff fffe BL os_mut_release
00000e e004 B |L6.26|
;;;446 else if(port == UART_RS485_2)
|L6.16|
000010 2c02 CMP r4,#2
000012 d102 BNE |L6.26|
;;;447 os_mut_release(MUT_RS485_2);
000014 4803 LDR r0,|L6.36|
000016 f7ff fffe BL os_mut_release
;;;448 }
|L6.26|
00001a bc10 POP {r4}
00001c bc08 POP {r3}
00001e 4718 BX r3
|L6.32|
000020 00000000 DCD MUT_RS485_1
|L6.36|
000024 00000000 DCD MUT_RS485_2
ENDP
AREA ||.constdata.1||, DATA, READONLY, ALIGN=2
DCD 0xc0004000
DCD 0xc0005000
DCD 0xc0006000
DCD 0xc0004000
DCD 0xc0005000
DCD 0xc0006000
DCD 0xc0004000
DCD 0xc0005000
DCD 0xc0006000
AREA ||SRAM.241||, NOINIT, ALIGN=1
UART_RXD_buf
% 20500
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -