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

📄 usart_printf.txt

📁 STM32手持式示波器源代码
💻 TXT
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\usart_printf.o --depend=.\Obj\usart_printf.d --device=DARMSTM --apcs=interwork -O0 -Otime -I..\..\Libraries\CMSIS\Core\CM3 -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\Source\inc -Id:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER ..\..\Source\src\usart_printf.c]
                          THUMB

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

                  PrintfLogo PROC
;;;25     */
;;;26     void PrintfLogo(char *strName, char *strDate)
000000  b570              PUSH     {r4-r6,lr}
;;;27     {
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
;;;28     	printf("*************************************************************\n\r");
000006  a00f              ADR      r0,|L1.68|
000008  f7fffffe          BL       __2printf
;;;29     	printf("* Example Name : %s\r\n", strName);
00000c  4621              MOV      r1,r4
00000e  a01d              ADR      r0,|L1.132|
000010  f7fffffe          BL       __2printf
;;;30     	printf("* Update Date  : %s\r\n", strDate);
000014  4629              MOV      r1,r5
000016  a021              ADR      r0,|L1.156|
000018  f7fffffe          BL       __2printf
;;;31     	printf("* StdPeriph_Lib Version : V3.1.2\n\r");
00001c  a025              ADR      r0,|L1.180|
00001e  f7fffffe          BL       __2printf
;;;32     	printf("* \n\r");
000022  a02d              ADR      r0,|L1.216|
000024  f7fffffe          BL       __2printf
;;;33     	printf("* Copyright www.armfly.com \r\n");
000028  a02d              ADR      r0,|L1.224|
00002a  f7fffffe          BL       __2printf
;;;34     	printf("* QQ    : 1295744630 \r\n");
00002e  a034              ADR      r0,|L1.256|
000030  f7fffffe          BL       __2printf
;;;35     	printf("* Email : armfly@qq.com \r\n");
000034  a038              ADR      r0,|L1.280|
000036  f7fffffe          BL       __2printf
;;;36     	printf("*************************************************************\n\r");
00003a  a002              ADR      r0,|L1.68|
00003c  f7fffffe          BL       __2printf
;;;37     }
000040  bd70              POP      {r4-r6,pc}
;;;38     
                          ENDP

000042  0000              DCW      0x0000
                  |L1.68|
000044  2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a        DCB      "*******************************************************"
00007b  2a2a2a2a2a2a0a0d00        DCB      "******\n\r",0
                  |L1.132|
000084  2a204578616d706c65204e616d65203a2025730d0a00        DCB      "* Example Name : %s\r\n",0
00009a  00                DCB      0
00009b  00                DCB      0
                  |L1.156|
00009c  2a20557064617465204461746520203a2025730d0a00        DCB      "* Update Date  : %s\r\n",0
0000b2  00                DCB      0
0000b3  00                DCB      0
                  |L1.180|
0000b4  2a205374645065726970685f4c69622056657273696f6e203a2056332e312e320a0d00        DCB      "* StdPeriph_Lib Version : V3.1.2\n\r",0
0000d7  00                DCB      0
                  |L1.216|
0000d8  2a200a0d00        DCB      "* \n\r",0
0000dd  00                DCB      0
0000de  00                DCB      0
0000df  00                DCB      0
                  |L1.224|
0000e0  2a20436f70797269676874207777772e61726d666c792e636f6d200d0a00        DCB      "* Copyright www.armfly.com \r\n",0
0000fe  00                DCB      0
0000ff  00                DCB      0
                  |L1.256|
000100  2a205151202020203a2031323935373434363330200d0a00        DCB      "* QQ    : 1295744630 \r\n",0
                  |L1.280|
000118  2a20456d61696c203a2061726d666c794071712e636f6d200d0a00        DCB      "* Email : armfly@qq.com \r\n",0
000133  00                DCB      0

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

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

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

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

                  fgetc PROC
;;;129    */
;;;130    int fgetc(FILE *f)
000000  b510              PUSH     {r4,lr}
;;;131    {
000002  4604              MOV      r4,r0
;;;132    	/* 等待串口1输入数据 */
;;;133    	while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)
000004  bf00              NOP      
                  |L3.6|
000006  2120              MOVS     r1,#0x20
000008  4804              LDR      r0,|L3.28|
00000a  f7fffffe          BL       USART_GetFlagStatus
00000e  2800              CMP      r0,#0
000010  d0f9              BEQ      |L3.6|
;;;134    	{}
;;;135    
;;;136    	return (int)USART_ReceiveData(USART1);
000012  4802              LDR      r0,|L3.28|
000014  f7fffffe          BL       USART_ReceiveData
;;;137    }
000018  bd10              POP      {r4,pc}
;;;138    
                          ENDP

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

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

                  fputc PROC
;;;109    */
;;;110    int fputc(int ch, FILE *f)
000000  b570              PUSH     {r4-r6,lr}
;;;111    {
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
;;;112    	/* Place your implementation of fputc here */
;;;113    	/* e.g. write a character to the USART */
;;;114    	USART_SendData(USART1, (uint8_t) ch);
000006  b2e1              UXTB     r1,r4
000008  4805              LDR      r0,|L4.32|
00000a  f7fffffe          BL       USART_SendData
;;;115    
;;;116    	/* Loop until the end of transmission */
;;;117    	while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
00000e  bf00              NOP      
                  |L4.16|
000010  2140              MOVS     r1,#0x40
000012  4803              LDR      r0,|L4.32|
000014  f7fffffe          BL       USART_GetFlagStatus
000018  2800              CMP      r0,#0
00001a  d0f9              BEQ      |L4.16|
;;;118    	{}
;;;119    
;;;120    	return ch;
00001c  4620              MOV      r0,r4
;;;121    }
00001e  bd70              POP      {r4-r6,pc}
;;;122    
                          ENDP

                  |L4.32|
                          DCD      0x40013800

⌨️ 快捷键说明

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