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

📄 bsp_usart.txt

📁 stm32-SDIO+FatFS文件系统txt-int-ascii
💻 TXT
字号:
; generated by ARM C/C++ Compiler, 4.1 [Build 561]
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\CpuRAM\Obj\bsp_usart.o --depend=.\CpuRAM\Obj\bsp_usart.d --cpu=Cortex-M3 --apcs=interwork -O0 --diag_suppress=870 -I..\..\Libraries\CMSIS\CM3\CoreSupport -I..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\User\bsp -I..\..\User\fatfs -I..\..\User -IC:\Keil\ARM\INC -IC:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_SRAM ..\..\User\bsp\bsp_usart.c]
                          THUMB

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

                  bsp_InitUart PROC
;;;32     */
;;;33     void bsp_InitUart(void)
000000  b500              PUSH     {lr}
;;;34     {
000002  b085              SUB      sp,sp,#0x14
;;;35     	GPIO_InitTypeDef GPIO_InitStructure;
;;;36     	USART_InitTypeDef USART_InitStructure;
;;;37     
;;;38     	/* 第1步:打开GPIO和USART部件的时钟 */
;;;39     	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
000004  2101              MOVS     r1,#1
000006  2005              MOVS     r0,#5
000008  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;40     	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
00000c  2101              MOVS     r1,#1
00000e  0388              LSLS     r0,r1,#14
000010  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;41     
;;;42     	/* 第2步:将USART Tx的GPIO配置为推挽复用模式 */
;;;43     	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
000014  f44f7000          MOV      r0,#0x200
000018  f8ad0010          STRH     r0,[sp,#0x10]
;;;44     	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
00001c  2018              MOVS     r0,#0x18
00001e  f88d0013          STRB     r0,[sp,#0x13]
;;;45     	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000022  2003              MOVS     r0,#3
000024  f88d0012          STRB     r0,[sp,#0x12]
;;;46     	GPIO_Init(GPIOA, &GPIO_InitStructure);
000028  a904              ADD      r1,sp,#0x10
00002a  4817              LDR      r0,|L1.136|
00002c  f7fffffe          BL       GPIO_Init
;;;47     
;;;48     	/* 第3步:将USART Rx的GPIO配置为浮空输入模式
;;;49     		由于CPU复位后,GPIO缺省都是浮空输入模式,因此下面这个步骤不是必须的
;;;50     		但是,我还是建议加上便于阅读,并且防止其它地方修改了这个口线的设置参数
;;;51     	*/
;;;52     	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
000030  f44f6080          MOV      r0,#0x400
000034  f8ad0010          STRH     r0,[sp,#0x10]
;;;53     	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
000038  2004              MOVS     r0,#4
00003a  f88d0013          STRB     r0,[sp,#0x13]
;;;54     	GPIO_Init(GPIOA, &GPIO_InitStructure);
00003e  a904              ADD      r1,sp,#0x10
000040  4811              LDR      r0,|L1.136|
000042  f7fffffe          BL       GPIO_Init
;;;55     	/*  第3步已经做了,因此这步可以不做
;;;56     		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
;;;57     	*/
;;;58     	GPIO_Init(GPIOA, &GPIO_InitStructure);
000046  a904              ADD      r1,sp,#0x10
000048  480f              LDR      r0,|L1.136|
00004a  f7fffffe          BL       GPIO_Init
;;;59     
;;;60     
;;;61     	/* 第4步:配置USART参数
;;;62     	    - 波特率   = 115200 baud
;;;63     	    - 数据长度 = 8 Bits
;;;64     	    - 1个停止位
;;;65     	    - 无校验
;;;66     	    - 禁止硬件流控(即禁止RTS和CTS)
;;;67     	    - 使能接收和发送
;;;68     	*/
;;;69     	USART_InitStructure.USART_BaudRate = 115200;
00004e  f44f30e1          MOV      r0,#0x1c200
000052  9000              STR      r0,[sp,#0]
;;;70     	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
000054  2000              MOVS     r0,#0
000056  f8ad0004          STRH     r0,[sp,#4]
;;;71     	USART_InitStructure.USART_StopBits = USART_StopBits_1;
00005a  f8ad0006          STRH     r0,[sp,#6]
;;;72     	USART_InitStructure.USART_Parity = USART_Parity_No;
00005e  f8ad0008          STRH     r0,[sp,#8]
;;;73     	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
000062  f8ad000c          STRH     r0,[sp,#0xc]
;;;74     	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
000066  200c              MOVS     r0,#0xc
000068  f8ad000a          STRH     r0,[sp,#0xa]
;;;75     	USART_Init(USART1, &USART_InitStructure);
00006c  4669              MOV      r1,sp
00006e  4807              LDR      r0,|L1.140|
000070  f7fffffe          BL       USART_Init
;;;76     
;;;77     	/* 第5步:使能 USART, 配置完毕 */
;;;78     	USART_Cmd(USART1, ENABLE);
000074  2101              MOVS     r1,#1
000076  4805              LDR      r0,|L1.140|
000078  f7fffffe          BL       USART_Cmd
;;;79     
;;;80     	/* 
;;;81     		CPU的小缺陷:串口配置好,如果直接Send,则第1个字节发送不出去
;;;82     		如下语句解决第1个字节无法正确发送出去的问题:
;;;83     	 	清发送完成标志,Transmission Complete flag 
;;;84     	*/
;;;85     	USART_ClearFlag(USART1, USART_FLAG_TC);    
00007c  2140              MOVS     r1,#0x40
00007e  4803              LDR      r0,|L1.140|
000080  f7fffffe          BL       USART_ClearFlag
;;;86     }
000084  b005              ADD      sp,sp,#0x14
000086  bd00              POP      {pc}
;;;87     
                          ENDP

                  |L1.136|
                          DCD      0x40010800
                  |L1.140|
                          DCD      0x40013800

⌨️ 快捷键说明

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