📄 bsp_uart.txt
字号:
; 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 + -