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

📄 bsp_uart.txt

📁 使用STR710的SPI接口访问外部EEPROM的例子程序.使用KEIL UV3编译.使用了MDK3.05操作系统.
💻 TXT
📖 第 1 页 / 共 3 页
字号:
00021a  5d40              LDRB     r0,[r0,r5]
;;;167    }
00021c  bc30              POP      {r4,r5}
00021e  4770              BX       lr
                          ENDP

                  UART_send_mbytes PROC
;;;196    u16 UART_send_mbytes( u8 UARTn, u8 *send_msg, u16 len )
;;;197    {
000220  b5fe              PUSH     {r1-r7,lr}
000222  0006              MOVS     r6,r0
000224  000f              MOVS     r7,r1
000226  0014              MOVS     r4,r2
;;;198    	UART_TypeDef *UART_x[3] =
000228  4953              LDR      r1,|L1.888|
00022a  4668              MOV      r0,sp
00022c  c92c              LDM      r1!,{r2,r3,r5}
00022e  c02c              STM      r0!,{r2,r3,r5}
;;;199    	{
;;;200    		UART0,		UART1,		UART2
;;;201    	};
;;;202    	/*
;;;203    	u8 sc752_channel[2] =
;;;204    	{
;;;205    		SC752_UARTA,		SC752_UARTB
;;;206    	};
;;;207    	*/
;;;208    	u16 msg_len;
;;;209    /*
;;;210    // ========================= <<<<<<<< For TCP Protocl Stack >>>>>>> ========================= //
;;;211    	if ((UARTn == UART_GPRS) && tcpPS_IsTcpConnect()) {
;;;212    		LED_COM_ON();
;;;213    		tcpPS_Send_Data (send_msg, len);
;;;214    		LED_COM_OFF();
;;;215    		return 1;
;;;216    	}
;;;217    	*/
;;;218    // ============================================ <<<<<<< Modified by likazhou on 07-04-24>>>>>>> //
;;;219    
;;;220    //	LED_COM_ON();
;;;221    	if ( len == 0 )
000230  2c00              CMP      r4,#0
000232  d105              BNE      |L1.576|
;;;222    	{
;;;223    		msg_len = strlen( ( char* )send_msg );
000234  0038              MOVS     r0,r7
000236  f7ff fffe         BL       strlen
00023a  0405              LSLS     r5,r0,#16
00023c  0c2d              LSRS     r5,r5,#16
00023e  e000              B        |L1.578|
;;;224    	}
;;;225    	else
;;;226    	{
;;;227    		msg_len = len;
                  |L1.576|
000240  0025              MOVS     r5,r4
;;;228    	}
;;;229    	msg_len %= MAX_UART_RXDBUF_SIZE;
                  |L1.578|
000242  0028              MOVS     r0,r5
000244  17e9              ASRS     r1,r5,#31
000246  0d09              LSRS     r1,r1,#20
000248  1949              ADDS     r1,r1,r5
00024a  1309              ASRS     r1,r1,#12
00024c  0309              LSLS     r1,r1,#12
00024e  1a69              SUBS     r1,r5,r1
000250  040d              LSLS     r5,r1,#16
000252  0c2d              LSRS     r5,r5,#16
;;;230    	if ( UARTn < 3 )
000254  2e03              CMP      r6,#3
000256  da14              BGE      |L1.642|
;;;231    	{
;;;232    		while ( msg_len )
000258  e009              B        |L1.622|
;;;233    		{
;;;234    			UART_ByteSend( UART_x[UARTn], send_msg );
                  |L1.602|
00025a  00b1              LSLS     r1,r6,#2
00025c  466a              MOV      r2,sp
00025e  5850              LDR      r0,[r2,r1]
000260  0039              MOVS     r1,r7
000262  f7ff fffe         BL       UART_ByteSend
;;;235    			send_msg += 1;
000266  1c7f              ADDS     r7,r7,#1
;;;236    			msg_len -= 1;
000268  1e68              SUBS     r0,r5,#1
00026a  0405              LSLS     r5,r0,#16
00026c  0c2d              LSRS     r5,r5,#16
                  |L1.622|
00026e  2d00              CMP      r5,#0
000270  d1f3              BNE      |L1.602|
;;;237    		}
;;;238    		while(!(UART_x[UARTn]->SR & UART_TxEmpty));	// 等待发送完成
000272  46c0              MOV      r8,r8
                  |L1.628|
000274  00b0              LSLS     r0,r6,#2
000276  4669              MOV      r1,sp
000278  5808              LDR      r0,[r1,r0]
00027a  8a80              LDRH     r0,[r0,#0x14]
00027c  2102              MOVS     r1,#2
00027e  4208              TST      r0,r1
000280  d0f8              BEQ      |L1.628|
;;;239    	}
;;;240    	/*
;;;241    	else
;;;242    	{
;;;243    		WriteSC752Str( sc752_channel[UARTn - 3], send_msg, msg_len );
;;;244    	}
;;;245    	 */
;;;246    //	LED_COM_OFF();
;;;247    	return 1;
                  |L1.642|
000282  2001              MOVS     r0,#1
;;;248    }
000284  bcfe              POP      {r1-r7}
000286  bc08              POP      {r3}
000288  4718              BX       r3
                          ENDP

                  ISR_RXD_read PROC
;;;299    void ISR_RXD_read(u8 channel)
;;;300    {
00028a  b41e              PUSH     {r1-r4}
;;;301    	UART_TypeDef *UART_x[3] =
00028c  493a              LDR      r1,|L1.888|
00028e  310c              ADDS     r1,r1,#0xc
000290  466c              MOV      r4,sp
000292  c90e              LDM      r1,{r1-r3}
000294  c40e              STM      r4!,{r1-r3}
;;;302    	{
;;;303    		UART0,		UART1,		UART2
;;;304    	};	
;;;305    	while ( ( UART_x[channel]->SR & ( UART_RxHalfFull | UART_RxBufFull  | UART_TimeOutNotEmpty) ) )//UART_TimeOutIdle
000296  e053              B        |L1.832|
;;;306    	{
;;;307    		UART_RXD_buf[channel].msg[UART_RXD_buf[channel].in] = ( u8 )UART_x[channel]->RxBUFR;
                  |L1.664|
000298  0081              LSLS     r1,r0,#2
00029a  466a              MOV      r2,sp
00029c  5851              LDR      r1,[r2,r1]
00029e  8909              LDRH     r1,[r1,#8]
0002a0  060a              LSLS     r2,r1,#24
0002a2  0e12              LSRS     r2,r2,#24
0002a4  0281              LSLS     r1,r0,#10
0002a6  1809              ADDS     r1,r1,r0
0002a8  0089              LSLS     r1,r1,#2
0002aa  4b32              LDR      r3,|L1.884|
0002ac  18c9              ADDS     r1,r1,r3
0002ae  1d09              ADDS     r1,r1,#4
0002b0  0283              LSLS     r3,r0,#10
0002b2  181b              ADDS     r3,r3,r0
0002b4  009b              LSLS     r3,r3,#2
0002b6  4c2f              LDR      r4,|L1.884|
0002b8  5ae3              LDRH     r3,[r4,r3]
0002ba  54ca              STRB     r2,[r1,r3]
;;;308    		UART_RXD_buf[channel].in += 1;
0002bc  0281              LSLS     r1,r0,#10
0002be  1809              ADDS     r1,r1,r0
0002c0  0089              LSLS     r1,r1,#2
0002c2  0022              MOVS     r2,r4
0002c4  5a51              LDRH     r1,[r2,r1]
0002c6  1c49              ADDS     r1,r1,#1
0002c8  0282              LSLS     r2,r0,#10
0002ca  1812              ADDS     r2,r2,r0
0002cc  0092              LSLS     r2,r2,#2
0002ce  0023              MOVS     r3,r4
0002d0  5299              STRH     r1,[r3,r2]
;;;309    		UART_RXD_buf[channel].in %= MAX_UART_RXDBUF_SIZE;
0002d2  0282              LSLS     r2,r0,#10
0002d4  1812              ADDS     r2,r2,r0
0002d6  0092              LSLS     r2,r2,#2
0002d8  5a99              LDRH     r1,[r3,r2]
0002da  17ca              ASRS     r2,r1,#31
0002dc  0d12              LSRS     r2,r2,#20
0002de  1852              ADDS     r2,r2,r1
0002e0  1312              ASRS     r2,r2,#12
0002e2  0312              LSLS     r2,r2,#12
0002e4  1a8a              SUBS     r2,r1,r2
0002e6  0283              LSLS     r3,r0,#10
0002e8  181b              ADDS     r3,r3,r0
0002ea  009b              LSLS     r3,r3,#2
0002ec  52e2              STRH     r2,[r4,r3]
;;;310    		if ( UART_RXD_buf[channel].in == UART_RXD_buf[channel].out )
0002ee  0281              LSLS     r1,r0,#10
0002f0  1809              ADDS     r1,r1,r0
0002f2  0089              LSLS     r1,r1,#2
0002f4  0022              MOVS     r2,r4
0002f6  5a51              LDRH     r1,[r2,r1]
0002f8  0282              LSLS     r2,r0,#10
0002fa  1812              ADDS     r2,r2,r0
0002fc  0092              LSLS     r2,r2,#2
0002fe  0023              MOVS     r3,r4
000300  18d2              ADDS     r2,r2,r3
000302  8852              LDRH     r2,[r2,#2]
000304  4291              CMP      r1,r2
000306  d11b              BNE      |L1.832|
;;;311    		{
;;;312    			UART_RXD_buf[channel].out += 1;
000308  0281              LSLS     r1,r0,#10
00030a  1809              ADDS     r1,r1,r0
00030c  0089              LSLS     r1,r1,#2
00030e  001a              MOVS     r2,r3
000310  1889              ADDS     r1,r1,r2
000312  8849              LDRH     r1,[r1,#2]
000314  1c49              ADDS     r1,r1,#1
000316  0282              LSLS     r2,r0,#10
000318  1812              ADDS     r2,r2,r0
00031a  0092              LSLS     r2,r2,#2
00031c  18d2              ADDS     r2,r2,r3
00031e  8051              STRH     r1,[r2,#2]
;;;313    			UART_RXD_buf[channel].out %= MAX_UART_RXDBUF_SIZE;
000320  0282              LSLS     r2,r0,#10
000322  1812              ADDS     r2,r2,r0
000324  0092              LSLS     r2,r2,#2
000326  18d2              ADDS     r2,r2,r3
000328  8851              LDRH     r1,[r2,#2]
00032a  17ca              ASRS     r2,r1,#31
00032c  0d12              LSRS     r2,r2,#20
00032e  1852              ADDS     r2,r2,r1
000330  1312              ASRS     r2,r2,#12
000332  0312              LSLS     r2,r2,#12
000334  1a8a              SUBS     r2,r1,r2
000336  0283              LSLS     r3,r0,#10
000338  181b              ADDS     r3,r3,r0
00033a  009b              LSLS     r3,r3,#2
00033c  191b              ADDS     r3,r3,r4
00033e  805a              STRH     r2,[r3,#2]
                  |L1.832|
000340  0081              LSLS     r1,r0,#2              ;305
000342  466a              MOV      r2,sp                 ;305
000344  5851              LDR      r1,[r2,r1]            ;305
000346  8a89              LDRH     r1,[r1,#0x14]         ;305
000348  22ff              MOVS     r2,#0xff              ;305
00034a  3242              ADDS     r2,r2,#0x42           ;305
00034c  4211              TST      r1,r2                 ;305
00034e  d1a3              BNE      |L1.664|              ;305
;;;314    		}
;;;315    	}
;;;316    
;;;317    }
000350  bc1e              POP      {r1-r4}
000352  4770              BX       lr
                  |L1.852|
000354  00002000          DCB      "\0\40\0\0"
                  |L1.856|
000358  18100800          DCB      "\0\b\20\30"
                  |L1.860|
00035c  05040301          DCB      "\1\3\4\5"
000360  00000007          DCB      "\a\0\0\0"
                  |L1.868|
000364  e0003000          DCD      0xe0003000
                  |L1.872|
000368  c0004000          DCD      0xc0004000
                  |L1.876|
00036c  c0005000          DCD      0xc0005000
                  |L1.880|
000370  c0006000          DCD      0xc0006000
                  |L1.884|
000374  00000000          DCD      UART_RXD_buf
                  |L1.888|
000378  00000000          DCD      ||.constdata.1||
                          ENDP



                          AREA ||.text.242||, CODE, READONLY, ALIGN=2

                  clear_rxdbuf PROC
;;;132    {
;;;133    	UART_RXD_buf[UARTn].in = 0;
000000  2100              MOVS     r1,#0
000002  0282              LSLS     r2,r0,#10
000004  1812              ADDS     r2,r2,r0
000006  0092              LSLS     r2,r2,#2
000008  4b03              LDR      r3,|L2.24|
00000a  5299              STRH     r1,[r3,r2]
;;;134    	UART_RXD_buf[UARTn].out = 0;
00000c  0282              LSLS     r2,r0,#10
00000e  1812              ADDS     r2,r2,r0
000010  0092              LSLS     r2,r2,#2
000012  18d2              ADDS     r2,r2,r3
000014  8051              STRH     r1,[r2,#2]
;;;135    }
000016  4770              BX       lr
                  |L2.24|
000018  00000000          DCD      UART_RXD_buf
                          ENDP



                          AREA ||.text.251||, CODE, READONLY, ALIGN=1

                  UART_get_line PROC
;;;261    u16 UART_get_line( u8 UARTn, u8 *msg, u16 max_len, u16 timeout )
;;;262    {
000000  b5ff              PUSH     {r0-r7,lr}
000002  b083              SUB      sp,sp,#0xc
000004  000c              MOVS     r4,r1
000006  0015              MOVS     r5,r2
000008  001e              MOVS     r6,r3
;;;263    	u16 i,	tmo,	len = 0;
00000a  2000              MOVS     r0,#0
00000c  9001              STR      r0,[sp,#4]
;;;264    
;;;265    	tmo = timeout * 1000 / 110;
00000e  207d              MOVS     r0,#0x7d
000010  00c0              LSLS     r0,r0,#3
000012  4370              MULS     r0,r6,r0
000014  216e              MOVS     r1,#0x6e
000016  f7ff fffe         BL       __aeabi_idivmod
00001a  0400              LSLS     r0,r0,#16
00001c  0c00              LSRS     r0,r0,#16
00001e  9002              STR      r0,[sp,#8]
;;;266    	*msg = 0x00;			
000020  2000              MOVS     r0,#0
000022  7020              STRB     r0,[r4,#0]
;;;267    	for ( i = 0; i < tmo; i += 1 )
000024  2700              MOVS     r7,#0
000026  e037              B        |L3.152|
;;;268    	{
;;;269    		while ( query_rxdbuf_received_byte( UARTn ) )
                  |L3.40|
000028  e025              B        |L3.118|
;;;270    		{
;;;271    			*msg = read_byte_from_UARTbuf( UARTn, 0 );			
                  |L3.42|
00002a  2100              MOVS     r1,#0
00002c  9803              LDR      r0,[sp,#0xc]
00002e  f7ff fffe         BL       read_byte_from_UARTbuf
000032  7020              STRB     r0,[r4,#0]
;;;272    			Discard_nbyte_rxdbuf( UARTn, 1 );
000034  2101              MOVS     r1,#1
000036  9803              LDR      r0,[sp,#0xc]
000038  f7ff fffe         BL       Discard_nbyte_rxdbuf
;;;273    			if ( *msg == 0x0d )
00003c  7820              LDRB     r0,[r4,#0]
00003e  280d              CMP      r0,#0xd
000040  d106              BNE      |L3.80|
;;;274    			{
;;;275    				*msg = 0x00;
000042  2000              MOVS     r0,#0
000044  7020              STRB     r0,[r4,#0]
;;;276    				return ( len );
000046  9801              LDR      r0,[sp,#4]
;;;277    			}
;;;278    			if ( isprint( *msg ) )
;;;279    			{
;;;280    				msg += 1;
;;;281    				len += 1;
;;;282    			}
;;;283    			if(len >= max_len)
;;;284    				return (len);
;;;285    		}
;;;286    		if ( len < max_len )
;;;287    		{
;;;288    			os_dly_wait( 10 );
;;;289    		}
;;;290    		else

⌨️ 快捷键说明

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