⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bsp_uart.txt

📁 使用STR710的SPI接口访问外部EEPROM的例子程序.使用KEIL UV3编译.使用了MDK3.05操作系统.
💻 TXT
📖 第 1 页 / 共 3 页
字号:
;;;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 + -