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

📄 bsp_uart.txt

📁 使用STR710的SPI接口访问外部EEPROM的例子程序.使用KEIL UV3编译.使用了MDK3.05操作系统.
💻 TXT
📖 第 1 页 / 共 3 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.0 [Build 951] for uVision
; commandline ArmCC [--thumb --debug -c --asm --interleave -o.\output\bsp_uart.o --feedback=.\output\Testat45db161.fed --device=DARMST --apcs=interwork -O0 -Id:\Keil\ARM\INC\ST\71x src\BSP\BSP_uart.c]

                          THUMB

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

                  UART_open PROC
;;;19     void UART_open( u8 UARTn, u32 BaudRate, u8 S_parity, u8 S_stopbits, u8 S_mode )
;;;20     {
000000  b5ff              PUSH     {r0-r7,lr}
000002  b087              SUB      sp,sp,#0x1c
000004  0005              MOVS     r5,r0
000006  001e              MOVS     r6,r3
000008  9f10              LDR      r7,[sp,#0x40]
;;;21     	//if ( UARTn < 3 )		// STR710上的串口
;;;22     	//{
;;;23     		UARTParity_TypeDef Parity;
;;;24     		UARTStopBits_TypeDef StopBits;
;;;25     		UARTMode_TypeDef Mode;
;;;26     
;;;27     		const UARTParity_TypeDef Tmp_parity[3] =
00000a  a0d2              ADR      r0,|L1.852|
00000c  6800              LDR      r0,[r0,#0]
00000e  9004              STR      r0,[sp,#0x10]
;;;28     		{
;;;29     			UART_EVEN_PARITY,		UART_ODD_PARITY,		UART_NO_PARITY
;;;30     		};
;;;31     		const UARTStopBits_TypeDef Tmp_stopbits[4] =
000010  a0d1              ADR      r0,|L1.856|
000012  6800              LDR      r0,[r0,#0]
000014  9003              STR      r0,[sp,#0xc]
;;;32     		{
;;;33     			UART_0_5_StopBits,		UART_1_StopBits,		UART_1_5_StopBits,		UART_2_StopBits
;;;34     		};
;;;35     		const UARTMode_TypeDef Tmp_mode[5] =
000016  a1d1              ADR      r1,|L1.860|
000018  c903              LDM      r1,{r0,r1}
00001a  ab01              ADD      r3,sp,#4
00001c  c303              STM      r3!,{r0,r1}
;;;36     		{
;;;37     			UARTM_8D,		UARTM_7D_P,		UARTM_9D,		UARTM_8D_W,		UARTM_8D_P
;;;38     		};
;;;39     		Parity = Tmp_parity[S_parity];
00001e  a804              ADD      r0,sp,#0x10
000020  9909              LDR      r1,[sp,#0x24]
000022  5c40              LDRB     r0,[r0,r1]
000024  9006              STR      r0,[sp,#0x18]
;;;40     		StopBits = Tmp_stopbits[S_stopbits];
000026  a803              ADD      r0,sp,#0xc
000028  5d84              LDRB     r4,[r0,r6]
;;;41     		Mode = Tmp_mode[S_mode];
00002a  a801              ADD      r0,sp,#4
00002c  5dc0              LDRB     r0,[r0,r7]
00002e  9005              STR      r0,[sp,#0x14]
;;;42     
;;;43     		switch ( UARTn )
000030  2d00              CMP      r5,#0
000032  d004              BEQ      |L1.62|
000034  2d01              CMP      r5,#1
000036  d033              BEQ      |L1.160|
000038  2d02              CMP      r5,#2
00003a  d17d              BNE      |L1.312|
00003c  e062              B        |L1.260|
;;;44     		{
;;;45     			case 0:
;;;46     				// 配置IO引脚
;;;47     				GPIO_Config( GPIO0, UART0_Tx_Pin, GPIO_AF_PP );
                  |L1.62|
00003e  2207              MOVS     r2,#7
000040  2101              MOVS     r1,#1
000042  0249              LSLS     r1,r1,#9
000044  48c7              LDR      r0,|L1.868|
000046  f7ff fffe         BL       GPIO_Config
;;;48     				GPIO_Config( GPIO0, UART0_Rx_Pin, GPIO_IN_TRI_CMOS );
00004a  2202              MOVS     r2,#2
00004c  01d1              LSLS     r1,r2,#7
00004e  48c5              LDR      r0,|L1.868|
000050  f7ff fffe         BL       GPIO_Config
;;;49     
;;;50     				// 配置 UART X
;;;51     				UART_OnOffConfig( UART0, ENABLE );		// 使能 UARTX on
000054  2101              MOVS     r1,#1
000056  48c4              LDR      r0,|L1.872|
000058  f7ff fffe         BL       UART_OnOffConfig
;;;52     				UART_FifoConfig( UART0, ENABLE );		// 禁用 FIFOs
00005c  2101              MOVS     r1,#1
00005e  48c2              LDR      r0,|L1.872|
000060  f7ff fffe         BL       UART_FifoConfig
;;;53     				UART_FifoReset( UART0, UART_RxFIFO ); 	// 重置 UART_RxFIFO
000064  2100              MOVS     r1,#0
000066  48c0              LDR      r0,|L1.872|
000068  f7ff fffe         BL       UART_FifoReset
;;;54     				UART_FifoReset( UART0, UART_TxFIFO ); 	// 重置 the UART_TxFIFO
00006c  2101              MOVS     r1,#1
00006e  48be              LDR      r0,|L1.872|
000070  f7ff fffe         BL       UART_FifoReset
;;;55     				UART_LoopBackConfig( UART0, DISABLE );	//禁止 Loop Back
000074  2100              MOVS     r1,#0
000076  48bc              LDR      r0,|L1.872|
000078  f7ff fffe         BL       UART_LoopBackConfig
;;;56     				UART_Config( UART0, BaudRate, Parity, StopBits, Mode );	// 配置串口参数
00007c  9a05              LDR      r2,[sp,#0x14]
00007e  0023              MOVS     r3,r4
000080  9200              STR      r2,[sp,#0]
000082  48b9              LDR      r0,|L1.872|
000084  9a06              LDR      r2,[sp,#0x18]
000086  9908              LDR      r1,[sp,#0x20]
000088  f7ff fffe         BL       UART_Config
;;;57     				UART_RxConfig( UART0, ENABLE );		   // 允许接收				
00008c  2101              MOVS     r1,#1
00008e  48b6              LDR      r0,|L1.872|
000090  f7ff fffe         BL       UART_RxConfig
;;;58     				UART_ItConfig( UART0, UART_RxBufFull, ENABLE );	// 允许中断
000094  2201              MOVS     r2,#1
000096  0011              MOVS     r1,r2
000098  48b3              LDR      r0,|L1.872|
00009a  f7ff fffe         BL       UART_ItConfig
;;;59     				break;
00009e  e066              B        |L1.366|
;;;60     			case 1:
;;;61     				// 配置IO引脚
;;;62     				GPIO_Config( GPIO0, UART1_Tx_Pin, GPIO_AF_PP );
                  |L1.160|
0000a0  2207              MOVS     r2,#7
0000a2  2101              MOVS     r1,#1
0000a4  02c9              LSLS     r1,r1,#11
0000a6  48af              LDR      r0,|L1.868|
0000a8  f7ff fffe         BL       GPIO_Config
;;;63     				GPIO_Config( GPIO0, UART1_Rx_Pin, GPIO_IN_TRI_CMOS );
0000ac  2202              MOVS     r2,#2
0000ae  0251              LSLS     r1,r2,#9
0000b0  48ac              LDR      r0,|L1.868|
0000b2  f7ff fffe         BL       GPIO_Config
;;;64     
;;;65     				// 配置 UART X
;;;66     				UART_OnOffConfig( UART1, ENABLE );		// 使能 UARTX on
0000b6  2101              MOVS     r1,#1
0000b8  48ac              LDR      r0,|L1.876|
0000ba  f7ff fffe         BL       UART_OnOffConfig
;;;67     				UART_FifoConfig( UART1, ENABLE );		// 禁用 FIFOs
0000be  2101              MOVS     r1,#1
0000c0  48aa              LDR      r0,|L1.876|
0000c2  f7ff fffe         BL       UART_FifoConfig
;;;68     				UART_FifoReset( UART1, UART_RxFIFO ); 	// 重置 UART_RxFIFO
0000c6  2100              MOVS     r1,#0
0000c8  48a8              LDR      r0,|L1.876|
0000ca  f7ff fffe         BL       UART_FifoReset
;;;69     				UART_FifoReset( UART1, UART_TxFIFO ); 	// 重置 the UART_TxFIFO
0000ce  2101              MOVS     r1,#1
0000d0  48a6              LDR      r0,|L1.876|
0000d2  f7ff fffe         BL       UART_FifoReset
;;;70     				UART_LoopBackConfig( UART1, DISABLE );	//禁止 Loop Back
0000d6  2100              MOVS     r1,#0
0000d8  48a4              LDR      r0,|L1.876|
0000da  f7ff fffe         BL       UART_LoopBackConfig
;;;71     				UART_Config( UART1, BaudRate, Parity, StopBits, Mode );	// 配置串口参数
0000de  9a05              LDR      r2,[sp,#0x14]
0000e0  0023              MOVS     r3,r4
0000e2  9200              STR      r2,[sp,#0]
0000e4  48a1              LDR      r0,|L1.876|
0000e6  9a06              LDR      r2,[sp,#0x18]
0000e8  9908              LDR      r1,[sp,#0x20]
0000ea  f7ff fffe         BL       UART_Config
;;;72     				UART_RxConfig( UART1, ENABLE );		   // 允许接收				
0000ee  2101              MOVS     r1,#1
0000f0  489e              LDR      r0,|L1.876|
0000f2  f7ff fffe         BL       UART_RxConfig
;;;73     				UART_ItConfig( UART1, UART_RxBufFull | UART_TimeOutNotEmpty |  UART_RxHalfFull, ENABLE );	// 允许中断
0000f6  2201              MOVS     r2,#1
0000f8  21ff              MOVS     r1,#0xff
0000fa  3142              ADDS     r1,r1,#0x42
0000fc  489b              LDR      r0,|L1.876|
0000fe  f7ff fffe         BL       UART_ItConfig
;;;74     				break;
000102  e034              B        |L1.366|
;;;75     			case 2:
;;;76     				// 配置IO引脚
;;;77     				GPIO_Config( GPIO0, UART2_Tx_Pin, GPIO_AF_PP );
                  |L1.260|
000104  2207              MOVS     r2,#7
000106  2101              MOVS     r1,#1
000108  0389              LSLS     r1,r1,#14
00010a  4896              LDR      r0,|L1.868|
00010c  f7ff fffe         BL       GPIO_Config
;;;78     				GPIO_Config( GPIO0, UART2_Rx_Pin, GPIO_IN_TRI_CMOS );
000110  2202              MOVS     r2,#2
000112  0311              LSLS     r1,r2,#12
000114  4893              LDR      r0,|L1.868|
000116  f7ff fffe         BL       GPIO_Config
;;;79     
;;;80     				// 配置 UART X
;;;81     				UART_OnOffConfig( UART2, ENABLE );		// 使能 UARTX on
00011a  2101              MOVS     r1,#1
00011c  4894              LDR      r0,|L1.880|
00011e  f7ff fffe         BL       UART_OnOffConfig
;;;82     				UART_FifoConfig( UART2, ENABLE);		// 禁用 FIFOs
000122  2101              MOVS     r1,#1
000124  4892              LDR      r0,|L1.880|
000126  f7ff fffe         BL       UART_FifoConfig
;;;83     				UART_FifoReset( UART2, UART_RxFIFO ); 	// 重置 UART_RxFIFO
00012a  2100              MOVS     r1,#0
00012c  4890              LDR      r0,|L1.880|
00012e  f7ff fffe         BL       UART_FifoReset
;;;84     				UART_FifoReset( UART2, UART_TxFIFO ); 	// 重置 the UART_TxFIFO
000132  2101              MOVS     r1,#1
000134  488e              LDR      r0,|L1.880|
000136  e000              B        |L1.314|
                  |L1.312|
000138  e018              B        |L1.364|
                  |L1.314|
00013a  f7ff fffe         BL       UART_FifoReset
;;;85     				UART_LoopBackConfig( UART2, DISABLE );	//禁止 Loop Back
00013e  2100              MOVS     r1,#0
000140  488b              LDR      r0,|L1.880|
000142  f7ff fffe         BL       UART_LoopBackConfig
;;;86     				UART_Config( UART2, BaudRate, Parity, StopBits, Mode );	// 配置串口参数
000146  9a05              LDR      r2,[sp,#0x14]
000148  0023              MOVS     r3,r4
00014a  9200              STR      r2,[sp,#0]
00014c  4888              LDR      r0,|L1.880|
00014e  9a06              LDR      r2,[sp,#0x18]
000150  9908              LDR      r1,[sp,#0x20]
000152  f7ff fffe         BL       UART_Config
;;;87     				UART_RxConfig( UART2, ENABLE );		   // 允许接收				
000156  2101              MOVS     r1,#1
000158  4885              LDR      r0,|L1.880|
00015a  f7ff fffe         BL       UART_RxConfig
;;;88     				UART_ItConfig( UART2, UART_RxBufFull |  UART_TimeOutNotEmpty | UART_RxHalfFull, ENABLE );	// 允许中断
00015e  2201              MOVS     r2,#1
000160  21ff              MOVS     r1,#0xff
000162  3142              ADDS     r1,r1,#0x42
000164  4882              LDR      r0,|L1.880|
000166  f7ff fffe         BL       UART_ItConfig
;;;89     				
;;;90     				break;
00016a  e000              B        |L1.366|
;;;91     			default:
;;;92     				break;
                  |L1.364|
00016c  46c0              MOV      r8,r8
                  |L1.366|
00016e  46c0              MOV      r8,r8                 ;59
;;;93     		}
;;;94     	//}
;;;95     	/*
;;;96     	else		// SC16IS752上的串口
;;;97     	{
;;;98     		Config_SC752_Uart( UARTn, BaudRate, S_parity, S_stopbits, S_mode );
;;;99     	}
;;;100    	*/
;;;101    }
000170  b00b              ADD      sp,sp,#0x2c
000172  bcf0              POP      {r4-r7}
000174  bc08              POP      {r3}
000176  4718              BX       r3
                          ENDP

                  Discard_nbyte_rxdbuf PROC
;;;114    void Discard_nbyte_rxdbuf( u8 UARTn, u16 num )
;;;115    {
000178  b430              PUSH     {r4,r5}
;;;116    	UART_RXD_buf[UARTn].out += num;
00017a  0282              LSLS     r2,r0,#10
00017c  1812              ADDS     r2,r2,r0
00017e  0092              LSLS     r2,r2,#2
000180  4b7c              LDR      r3,|L1.884|
000182  18d2              ADDS     r2,r2,r3
000184  8852              LDRH     r2,[r2,#2]
000186  1852              ADDS     r2,r2,r1
000188  0283              LSLS     r3,r0,#10
00018a  181b              ADDS     r3,r3,r0
00018c  009b              LSLS     r3,r3,#2
00018e  4c79              LDR      r4,|L1.884|
000190  191b              ADDS     r3,r3,r4
000192  805a              STRH     r2,[r3,#2]
;;;117    	UART_RXD_buf[UARTn].out %= MAX_UART_RXDBUF_SIZE;
000194  0283              LSLS     r3,r0,#10
000196  181b              ADDS     r3,r3,r0
000198  009b              LSLS     r3,r3,#2
00019a  191b              ADDS     r3,r3,r4
00019c  885a              LDRH     r2,[r3,#2]
00019e  17d3              ASRS     r3,r2,#31
0001a0  0d1b              LSRS     r3,r3,#20
0001a2  189b              ADDS     r3,r3,r2
0001a4  131b              ASRS     r3,r3,#12
0001a6  031b              LSLS     r3,r3,#12
0001a8  1ad3              SUBS     r3,r2,r3
0001aa  041c              LSLS     r4,r3,#16
0001ac  0c24              LSRS     r4,r4,#16
0001ae  0283              LSLS     r3,r0,#10
0001b0  181b              ADDS     r3,r3,r0
0001b2  009b              LSLS     r3,r3,#2
0001b4  4d6f              LDR      r5,|L1.884|
0001b6  195b              ADDS     r3,r3,r5
0001b8  805c              STRH     r4,[r3,#2]
;;;118    }
0001ba  bc30              POP      {r4,r5}
0001bc  4770              BX       lr
                          ENDP

                  query_rxdbuf_received_byte PROC
;;;148    u16 query_rxdbuf_received_byte( u8 UARTn )
;;;149    {
0001be  b410              PUSH     {r4}
0001c0  0001              MOVS     r1,r0
;;;150    	return ( ( MAX_UART_RXDBUF_SIZE + UART_RXD_buf[UARTn].in - UART_RXD_buf[UARTn].out ) % MAX_UART_RXDBUF_SIZE );
0001c2  0288              LSLS     r0,r1,#10
0001c4  1840              ADDS     r0,r0,r1
0001c6  0080              LSLS     r0,r0,#2
0001c8  4b6a              LDR      r3,|L1.884|
0001ca  5a18              LDRH     r0,[r3,r0]
0001cc  2301              MOVS     r3,#1
0001ce  031b              LSLS     r3,r3,#12
0001d0  18c0              ADDS     r0,r0,r3
0001d2  1d1b              ADDS     r3,r3,#4
0001d4  434b              MULS     r3,r1,r3
0001d6  4c67              LDR      r4,|L1.884|
0001d8  191b              ADDS     r3,r3,r4
0001da  885b              LDRH     r3,[r3,#2]
0001dc  1ac2              SUBS     r2,r0,r3
0001de  17d0              ASRS     r0,r2,#31
0001e0  0d00              LSRS     r0,r0,#20
0001e2  1880              ADDS     r0,r0,r2
0001e4  1300              ASRS     r0,r0,#12
0001e6  0300              LSLS     r0,r0,#12
0001e8  1a10              SUBS     r0,r2,r0
0001ea  0400              LSLS     r0,r0,#16
0001ec  0c00              LSRS     r0,r0,#16
;;;151    }
0001ee  bc10              POP      {r4}
0001f0  4770              BX       lr
                          ENDP

                  read_byte_from_UARTbuf PROC
;;;164    u8 read_byte_from_UARTbuf( u8 UARTn, u16 position )
;;;165    {
0001f2  b430              PUSH     {r4,r5}
0001f4  0002              MOVS     r2,r0
;;;166    	return( UART_RXD_buf[UARTn].msg[( UART_RXD_buf[UARTn].out + position ) % MAX_UART_RXDBUF_SIZE] );
0001f6  0290              LSLS     r0,r2,#10
0001f8  1880              ADDS     r0,r0,r2
0001fa  0080              LSLS     r0,r0,#2
0001fc  4b5d              LDR      r3,|L1.884|
0001fe  18c0              ADDS     r0,r0,r3
000200  8840              LDRH     r0,[r0,#2]
000202  1844              ADDS     r4,r0,r1
000204  17e0              ASRS     r0,r4,#31
000206  0d00              LSRS     r0,r0,#20
000208  1900              ADDS     r0,r0,r4
00020a  1300              ASRS     r0,r0,#12
00020c  0300              LSLS     r0,r0,#12
00020e  1a25              SUBS     r5,r4,r0
000210  0290              LSLS     r0,r2,#10
000212  1880              ADDS     r0,r0,r2
000214  0080              LSLS     r0,r0,#2
000216  18c0              ADDS     r0,r0,r3
000218  1d00              ADDS     r0,r0,#4

⌨️ 快捷键说明

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