; generated by Component: ARM Compiler 5.06 update 7 (build 960) Tool: ArmCC [4d365d]
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\flash\obj\bsp_usart_dma.o --asm_dir=.\Flash\List\ --list_dir=.\Flash\List\ --depend=.\flash\obj\bsp_usart_dma.d --cpu=Cortex-M3 --apcs=interwork -O0 --diag_suppress=9931,870 -I..\..\Libraries\CMSIS\Device\ST\STM32F10x\Include -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\Libraries\STM32_USB-FS-Device_Driver\inc -I..\..\Libraries\CMSIS\Include -I..\..\User\bsp -I..\..\User\bsp\inc -I..\..\User\app\inc -I..\..\User -IC:\Users\w1619\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__MICROLIB -D__UVISION_VERSION=538 -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER -DSTM32F10X_HD --omf_browse=.\flash\obj\bsp_usart_dma.crf ..\..\User\bsp\src\bsp_usart_dma.c]
                          THUMB

                          AREA ||i.USART1_IRQHandler||, CODE, READONLY, ALIGN=2

                  USART1_IRQHandler PROC
;;;194     */
;;;195    void DEBUG_USART_IRQHandler(void)
000000  b510              PUSH     {r4,lr}
;;;196    {
;;;197    	uint16_t t;
;;;198    	if (USART_GetITStatus(DEBUG_USARTx, USART_IT_IDLE) == SET) // 检查中断是否发生
000002  f2404124          MOV      r1,#0x424
000006  4817              LDR      r0,|L1.100|
000008  f7fffffe          BL       USART_GetITStatus
00000c  2801              CMP      r0,#1
00000e  d127              BNE      |L1.96|
;;;199    	{
;;;200    		DMA_Cmd(USART_RX_DMA_CHANNEL, DISABLE); // 关闭DMA传输
000010  2100              MOVS     r1,#0
000012  4815              LDR      r0,|L1.104|
000014  f7fffffe          BL       DMA_Cmd
;;;201    
;;;202    		t = DMA_GetCurrDataCounter(USART_RX_DMA_CHANNEL); // 获取剩余的数据数量
000018  4813              LDR      r0,|L1.104|
00001a  f7fffffe          BL       DMA_GetCurrDataCounter
00001e  4604              MOV      r4,r0
;;;203    		memset(g_RxBuf, 0, sizeof g_RxBuf);
000020  2140              MOVS     r1,#0x40
000022  4812              LDR      r0,|L1.108|
000024  f7fffffe          BL       __aeabi_memclr
;;;204    		memcpy(g_RxBuf, ReceiveBuff, RECEIVEBUFF_SIZE - t);
000028  f1c40240          RSB      r2,r4,#0x40
00002c  4910              LDR      r1,|L1.112|
00002e  480f              LDR      r0,|L1.108|
000030  f7fffffe          BL       __aeabi_memcpy
;;;205    		memset(ReceiveBuff, 0, sizeof ReceiveBuff);
000034  2140              MOVS     r1,#0x40
000036  480e              LDR      r0,|L1.112|
000038  f7fffffe          BL       __aeabi_memclr
;;;206    		g_ucRxRcvNewFlag = 1;
00003c  2001              MOVS     r0,#1
00003e  490d              LDR      r1,|L1.116|
000040  7008              STRB     r0,[r1,#0]
;;;207    
;;;208    		DMA_SetCurrDataCounter(USART_RX_DMA_CHANNEL, RECEIVEBUFF_SIZE); // 重新设置传输的数据数量
000042  2140              MOVS     r1,#0x40
000044  4808              LDR      r0,|L1.104|
000046  f7fffffe          BL       DMA_SetCurrDataCounter
;;;209    		DMA_Cmd(USART_RX_DMA_CHANNEL, ENABLE);							// 开启DMA传输
00004a  2101              MOVS     r1,#1
00004c  4806              LDR      r0,|L1.104|
00004e  f7fffffe          BL       DMA_Cmd
;;;210    
;;;211    		USART_ReceiveData(DEBUG_USARTx);				// 读取一次数据，不然会一直进中断
000052  4804              LDR      r0,|L1.100|
000054  f7fffffe          BL       USART_ReceiveData
;;;212    		USART_ClearFlag(DEBUG_USARTx, USART_FLAG_IDLE); // 清除串口空闲中断标志位
000058  2110              MOVS     r1,#0x10
00005a  4802              LDR      r0,|L1.100|
00005c  f7fffffe          BL       USART_ClearFlag
                  |L1.96|
;;;213    	}
;;;214    }
000060  bd10              POP      {r4,pc}
                          ENDP

000062  0000              DCW      0x0000
                  |L1.100|
                          DCD      0x40013800
                  |L1.104|
                          DCD      0x40020058
                  |L1.108|
                          DCD      g_RxBuf
                  |L1.112|
                          DCD      ReceiveBuff
                  |L1.116|
                          DCD      g_ucRxRcvNewFlag

                          AREA ||i.USART_Config||, CODE, READONLY, ALIGN=2

                  USART_Config PROC
;;;13      */
;;;14     void USART_Config(void)
000000  b500              PUSH     {lr}
;;;15     {
000002  b087              SUB      sp,sp,#0x1c
;;;16     	GPIO_InitTypeDef GPIO_InitStructure;
;;;17     	USART_InitTypeDef USART_InitStructure;
;;;18     	NVIC_InitTypeDef NVIC_InitStruct;
;;;19     	// 打开串口GPIO的时钟
;;;20     	DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);
000004  2101              MOVS     r1,#1
000006  2004              MOVS     r0,#4
000008  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;21     
;;;22     	// 打开串口外设的时钟
;;;23     	DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);
00000c  2101              MOVS     r1,#1
00000e  0388              LSLS     r0,r1,#14
000010  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;24     
;;;25     	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
000014  f44f60a0          MOV      r0,#0x500
000018  f7fffffe          BL       NVIC_PriorityGroupConfig
;;;26     	NVIC_InitStruct.NVIC_IRQChannel = DEBUG_USART_IRQ;
00001c  2025              MOVS     r0,#0x25
00001e  f88d0004          STRB     r0,[sp,#4]
;;;27     	NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
000022  2001              MOVS     r0,#1
000024  f88d0007          STRB     r0,[sp,#7]
;;;28     	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
000028  f88d0005          STRB     r0,[sp,#5]
;;;29     	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 3;
00002c  2003              MOVS     r0,#3
00002e  f88d0006          STRB     r0,[sp,#6]
;;;30     	NVIC_Init(&NVIC_InitStruct);
000032  a801              ADD      r0,sp,#4
000034  f7fffffe          BL       NVIC_Init
;;;31     
;;;32     	// 将USART Tx的GPIO配置为推挽复用模式
;;;33     	GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;
000038  f44f7000          MOV      r0,#0x200
00003c  f8ad0018          STRH     r0,[sp,#0x18]
;;;34     	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
000040  2018              MOVS     r0,#0x18
000042  f88d001b          STRB     r0,[sp,#0x1b]
;;;35     	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000046  2003              MOVS     r0,#3
000048  f88d001a          STRB     r0,[sp,#0x1a]
;;;36     	GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);
00004c  a906              ADD      r1,sp,#0x18
00004e  4816              LDR      r0,|L2.168|
000050  f7fffffe          BL       GPIO_Init
;;;37     
;;;38     	// 将USART Rx的GPIO配置为浮空输入模式
;;;39     	GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;
000054  f44f6080          MOV      r0,#0x400
000058  f8ad0018          STRH     r0,[sp,#0x18]
;;;40     	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
00005c  2004              MOVS     r0,#4
00005e  f88d001b          STRB     r0,[sp,#0x1b]
;;;41     	GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);
000062  a906              ADD      r1,sp,#0x18
000064  4810              LDR      r0,|L2.168|
000066  f7fffffe          BL       GPIO_Init
;;;42     
;;;43     	// 配置串口的工作参数
;;;44     	// 配置波特率
;;;45     	USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;
00006a  f44f30e1          MOV      r0,#0x1c200
00006e  9002              STR      r0,[sp,#8]
;;;46     	// 配置 针数据字长
;;;47     	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
000070  2000              MOVS     r0,#0
000072  f8ad000c          STRH     r0,[sp,#0xc]
;;;48     	// 配置停止位
;;;49     	USART_InitStructure.USART_StopBits = USART_StopBits_1;
000076  f8ad000e          STRH     r0,[sp,#0xe]
;;;50     	// 配置校验位
;;;51     	USART_InitStructure.USART_Parity = USART_Parity_No;
00007a  f8ad0010          STRH     r0,[sp,#0x10]
;;;52     	// 配置硬件流控制
;;;53     	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
00007e  f8ad0014          STRH     r0,[sp,#0x14]
;;;54     	// 配置工作模式，收发一起
;;;55     	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
000082  200c              MOVS     r0,#0xc
000084  f8ad0012          STRH     r0,[sp,#0x12]
;;;56     	// 完成串口的初始化配置
;;;57     	USART_Init(DEBUG_USARTx, &USART_InitStructure);
000088  a902              ADD      r1,sp,#8
00008a  4808              LDR      r0,|L2.172|
00008c  f7fffffe          BL       USART_Init
;;;58     	// 使能空闲中断
;;;59     	USART_ITConfig(DEBUG_USARTx, USART_IT_IDLE, ENABLE);
000090  2201              MOVS     r2,#1
000092  f2404124          MOV      r1,#0x424
000096  4805              LDR      r0,|L2.172|
000098  f7fffffe          BL       USART_ITConfig
;;;60     	// 使能串口
;;;61     	USART_Cmd(DEBUG_USARTx, ENABLE);
00009c  2101              MOVS     r1,#1
00009e  4803              LDR      r0,|L2.172|
0000a0  f7fffffe          BL       USART_Cmd
;;;62     }
0000a4  b007              ADD      sp,sp,#0x1c
0000a6  bd00              POP      {pc}
;;;63     
                          ENDP

                  |L2.168|
                          DCD      0x40010800
                  |L2.172|
                          DCD      0x40013800

                          AREA ||i.USARTx_DMA_Config||, CODE, READONLY, ALIGN=2

                  USARTx_DMA_Config PROC
;;;154     */
;;;155    void USARTx_DMA_Config(void)
000000  b500              PUSH     {lr}
;;;156    {
000002  b08b              SUB      sp,sp,#0x2c
;;;157    	DMA_InitTypeDef DMA_InitStructure;
;;;158    	// 开启DMA时钟
;;;159    	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
000004  2101              MOVS     r1,#1
000006  4608              MOV      r0,r1
000008  f7fffffe          BL       RCC_AHBPeriphClockCmd
;;;160    
;;;161    	// 设置DMA源地址：串口数据寄存器地址*/
;;;162    	DMA_InitStructure.DMA_PeripheralBaseAddr = USART_DR_ADDRESS;
00000c  480f              LDR      r0,|L3.76|
00000e  9000              STR      r0,[sp,#0]
;;;163    	// 内存地址(要传输的变量的指针)
;;;164    	DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ReceiveBuff;
000010  480f              LDR      r0,|L3.80|
000012  9001              STR      r0,[sp,#4]
;;;165    	// 方向：从外设到内存
;;;166    	DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
000014  2000              MOVS     r0,#0
000016  9002              STR      r0,[sp,#8]
;;;167    	// 传输大小
;;;168    	DMA_InitStructure.DMA_BufferSize = RECEIVEBUFF_SIZE;
000018  2040              MOVS     r0,#0x40
00001a  9003              STR      r0,[sp,#0xc]
;;;169    	// 外设地址不增
;;;170    	DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
00001c  2000              MOVS     r0,#0
00001e  9004              STR      r0,[sp,#0x10]
;;;171    	// 内存地址自增
;;;172    	DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
000020  2080              MOVS     r0,#0x80
000022  9005              STR      r0,[sp,#0x14]
;;;173    	// 外设数据单位
;;;174    	DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
000024  2000              MOVS     r0,#0
000026  9006              STR      r0,[sp,#0x18]
;;;175    	// 内存数据单位
;;;176    	DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
000028  9007              STR      r0,[sp,#0x1c]
;;;177    	// DMA模式，一次或者循环模式
;;;178    	// DMA_InitStructure.DMA_Mode = DMA_Mode_Normal ;
;;;179    	DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
00002a  2020              MOVS     r0,#0x20
00002c  9008              STR      r0,[sp,#0x20]
;;;180    	// 优先级：中
;;;181    	DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
00002e  01c0              LSLS     r0,r0,#7
000030  9009              STR      r0,[sp,#0x24]
;;;182    	// 禁止内存到内存的传输
;;;183    	DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
000032  2000              MOVS     r0,#0
000034  900a              STR      r0,[sp,#0x28]
;;;184    	// 配置DMA通道
;;;185    	DMA_Init(USART_RX_DMA_CHANNEL, &DMA_InitStructure);
000036  4669              MOV      r1,sp
000038  4806              LDR      r0,|L3.84|
00003a  f7fffffe          BL       DMA_Init
;;;186    	// 使能DMA
;;;187    	DMA_Cmd(USART_RX_DMA_CHANNEL, ENABLE);
00003e  2101              MOVS     r1,#1
000040  4804              LDR      r0,|L3.84|
000042  f7fffffe          BL       DMA_Cmd
;;;188    }
000046  b00b              ADD      sp,sp,#0x2c
000048  bd00              POP      {pc}
;;;189    
                          ENDP

00004a  0000              DCW      0x0000
                  |L3.76|
                          DCD      0x40013804
                  |L3.80|
                          DCD      ReceiveBuff
                  |L3.84|
                          DCD      0x40020058

                          AREA ||i.Usart_SendArray||, CODE, READONLY, ALIGN=1

                  Usart_SendArray PROC
;;;75     /****************** 发送8位的数组 ************************/
;;;76     void Usart_SendArray(USART_TypeDef *pUSARTx, uint8_t *array, uint16_t num)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;77     {
000004  4607              MOV      r7,r0
000006  460d              MOV      r5,r1
000008  4616              MOV      r6,r2
;;;78     	uint8_t i;
;;;79     
;;;80     	for (i = 0; i < num; i++)
00000a  2400              MOVS     r4,#0
00000c  e005              B        |L4.26|
                  |L4.14|
;;;81     	{
;;;82     		/* 发送一个字节数据到USART */
;;;83     		Usart_SendByte(pUSARTx, array[i]);
00000e  5d29              LDRB     r1,[r5,r4]
000010  4638              MOV      r0,r7
000012  f7fffffe          BL       Usart_SendByte
000016  1c60              ADDS     r0,r4,#1              ;80
000018  b2c4              UXTB     r4,r0                 ;80
                  |L4.26|
00001a  42b4              CMP      r4,r6                 ;80
00001c  dbf7              BLT      |L4.14|
;;;84     	}
;;;85     	/* 等待发送完成 */
;;;86     	while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) == RESET)
00001e  bf00              NOP      
                  |L4.32|
000020  2140              MOVS     r1,#0x40
000022  4638              MOV      r0,r7
000024  f7fffffe          BL       USART_GetFlagStatus
000028  2800              CMP      r0,#0
00002a  d0f9              BEQ      |L4.32|
;;;87     		;
;;;88     }
00002c  e8bd81f0          POP      {r4-r8,pc}
;;;89     
                          ENDP


                          AREA ||i.Usart_SendByte||, CODE, READONLY, ALIGN=1

                  Usart_SendByte PROC
;;;64     /*****************  发送一个字节 **********************/
;;;65     void Usart_SendByte(USART_TypeDef *pUSARTx, uint8_t ch)
000000  b570              PUSH     {r4-r6,lr}
;;;66     {
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
;;;67     	/* 发送一个字节数据到USART */
;;;68     	USART_SendData(pUSARTx, ch);
000006  4629              MOV      r1,r5
000008  4620              MOV      r0,r4
00000a  f7fffffe          BL       USART_SendData
;;;69     
;;;70     	/* 等待发送数据寄存器为空 */
;;;71     	while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET)
00000e  bf00              NOP      
                  |L5.16|
000010  2180              MOVS     r1,#0x80
000012  4620              MOV      r0,r4
000014  f7fffffe          BL       USART_GetFlagStatus
000018  2800              CMP      r0,#0
00001a  d0f9              BEQ      |L5.16|
;;;72     		;
;;;73     }
00001c  bd70              POP      {r4-r6,pc}
;;;74     
                          ENDP


                          AREA ||i.Usart_SendHalfWord||, CODE, READONLY, ALIGN=1

                  Usart_SendHalfWord PROC
;;;106    /*****************  发送一个16位数 **********************/
;;;107    void Usart_SendHalfWord(USART_TypeDef *pUSARTx, uint16_t ch)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;108    {
000004  4605              MOV      r5,r0
000006  460c              MOV      r4,r1
;;;109    	uint8_t temp_h, temp_l;
;;;110    
;;;111    	/* 取出高八位 */
;;;112    	temp_h = (ch & 0XFF00) >> 8;
000008  0a26              LSRS     r6,r4,#8
;;;113    	/* 取出低八位 */
;;;114    	temp_l = ch & 0XFF;
00000a  b2e7              UXTB     r7,r4
;;;115    
;;;116    	/* 发送高八位 */
;;;117    	USART_SendData(pUSARTx, temp_h);
00000c  4631              MOV      r1,r6
00000e  4628              MOV      r0,r5
000010  f7fffffe          BL       USART_SendData
;;;118    	while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET)
000014  bf00              NOP      
                  |L6.22|
000016  2180              MOVS     r1,#0x80
000018  4628              MOV      r0,r5
00001a  f7fffffe          BL       USART_GetFlagStatus
00001e  2800              CMP      r0,#0
000020  d0f9              BEQ      |L6.22|
;;;119    		;
;;;120    
;;;121    	/* 发送低八位 */
;;;122    	USART_SendData(pUSARTx, temp_l);
000022  4639              MOV      r1,r7
000024  4628              MOV      r0,r5
000026  f7fffffe          BL       USART_SendData
;;;123    	while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET)
00002a  bf00              NOP      
                  |L6.44|
00002c  2180              MOVS     r1,#0x80
00002e  4628              MOV      r0,r5
000030  f7fffffe          BL       USART_GetFlagStatus
000034  2800              CMP      r0,#0
000036  d0f9              BEQ      |L6.44|
;;;124    		;
;;;125    }
000038  e8bd81f0          POP      {r4-r8,pc}
;;;126    
                          ENDP


                          AREA ||i.Usart_SendString||, CODE, READONLY, ALIGN=1

                  Usart_SendString PROC
;;;90     /*****************  发送字符串 **********************/
;;;91     void Usart_SendString(USART_TypeDef *pUSARTx, char *str)
000000  b570              PUSH     {r4-r6,lr}
;;;92     {
000002  4606              MOV      r6,r0
000004  460c              MOV      r4,r1
;;;93     	unsigned int k = 0;
000006  2500              MOVS     r5,#0
;;;94     	do
000008  bf00              NOP      
                  |L7.10|
;;;95     	{
;;;96     		Usart_SendByte(pUSARTx, *(str + k));
00000a  5d61              LDRB     r1,[r4,r5]
00000c  4630              MOV      r0,r6
00000e  f7fffffe          BL       Usart_SendByte
;;;97     		k++;
000012  1c6d              ADDS     r5,r5,#1
;;;98     	} while (*(str + k) != '\0');
000014  5d60              LDRB     r0,[r4,r5]
000016  2800              CMP      r0,#0
000018  d1f7              BNE      |L7.10|
;;;99     
;;;100    	/* 等待发送完成 */
;;;101    	while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) == RESET)
00001a  bf00              NOP      
                  |L7.28|
00001c  2140              MOVS     r1,#0x40
00001e  4630              MOV      r0,r6
000020  f7fffffe          BL       USART_GetFlagStatus
000024  2800              CMP      r0,#0
000026  d0f9              BEQ      |L7.28|
;;;102    	{
;;;103    	}
;;;104    }
000028  bd70              POP      {r4-r6,pc}
;;;105    
                          ENDP


                          AREA ||i.fgetc||, CODE, READONLY, ALIGN=2

                  fgetc PROC
;;;140    /// 重定向c库函数scanf到串口，重写向后可使用scanf、getchar等函数
;;;141    int fgetc(FILE *f)
000000  b510              PUSH     {r4,lr}
;;;142    {
000002  4604              MOV      r4,r0
;;;143    	/* 等待串口输入数据 */
;;;144    	while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET)
000004  bf00              NOP      
                  |L8.6|
000006  2120              MOVS     r1,#0x20
000008  4804              LDR      r0,|L8.28|
00000a  f7fffffe          BL       USART_GetFlagStatus
00000e  2800              CMP      r0,#0
000010  d0f9              BEQ      |L8.6|
;;;145    		;
;;;146    
;;;147    	return (int)USART_ReceiveData(DEBUG_USARTx);
000012  4802              LDR      r0,|L8.28|
000014  f7fffffe          BL       USART_ReceiveData
;;;148    }
000018  bd10              POP      {r4,pc}
;;;149    
                          ENDP

00001a  0000              DCW      0x0000
                  |L8.28|
                          DCD      0x40013800

                          AREA ||i.fputc||, CODE, READONLY, ALIGN=2

                  fputc PROC
;;;127    /// 重定向c库函数printf到串口，重定向后可使用printf函数
;;;128    int fputc(int ch, FILE *f)
000000  b570              PUSH     {r4-r6,lr}
;;;129    {
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
;;;130    	/* 发送一个字节数据到串口 */
;;;131    	USART_SendData(DEBUG_USARTx, (uint8_t)ch);
000006  b2e1              UXTB     r1,r4
000008  4805              LDR      r0,|L9.32|
00000a  f7fffffe          BL       USART_SendData
;;;132    
;;;133    	/* 等待发送完毕 */
;;;134    	while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET)
00000e  bf00              NOP      
                  |L9.16|
000010  2180              MOVS     r1,#0x80
000012  4803              LDR      r0,|L9.32|
000014  f7fffffe          BL       USART_GetFlagStatus
000018  2800              CMP      r0,#0
00001a  d0f9              BEQ      |L9.16|
;;;135    		;
;;;136    
;;;137    	return (ch);
00001c  4620              MOV      r0,r4
;;;138    }
00001e  bd70              POP      {r4-r6,pc}
;;;139    
                          ENDP

                  |L9.32|
                          DCD      0x40013800

                          AREA ||.bss||, DATA, NOINIT, ALIGN=0

                  ReceiveBuff
                          %        64
                  g_RxBuf
                          %        64

                          AREA ||.data||, DATA, ALIGN=0

                  g_ucRxRcvNewFlag
000000  00                DCB      0x00

;*** Start embedded assembler ***

#line 1 "..\\..\\User\\bsp\\src\\bsp_usart_dma.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___15_bsp_usart_dma_c_7598bab3____REV16|
#line 114 "..\\..\\Libraries\\CMSIS\\Include\\core_cmInstr.h"
|__asm___15_bsp_usart_dma_c_7598bab3____REV16| PROC
#line 115

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE
	THUMB
	EXPORT |__asm___15_bsp_usart_dma_c_7598bab3____REVSH|
#line 128
|__asm___15_bsp_usart_dma_c_7598bab3____REVSH| PROC
#line 129

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
