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

📄 main.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\main.o --depend=.\Obj\main.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\main.c]
                          THUMB

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

                  DispLogo PROC
;;;167    */
;;;168    static void DispLogo(void)
000000  b510              PUSH     {r4,lr}
;;;169    {
;;;170    	/* 通过串口输出例程名和更新日期 */
;;;171    	PrintfLogo(EXAMPLE_NAME, EXAMPLE_DATE);
000002  a102              ADR      r1,|L1.12|
000004  a004              ADR      r0,|L1.24|
000006  f7fffffe          BL       PrintfLogo
;;;172    }
00000a  bd10              POP      {r4,pc}
;;;173    
                          ENDP

                  |L1.12|
00000c  323031302d30332d313600        DCB      "2010-03-16",0
000017  00                DCB      0
                  |L1.24|
000018  5446542044534f2044656d6f00        DCB      "TFT DSO Demo",0
000025  00                DCB      0
000026  00                DCB      0
000027  00                DCB      0

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

                  GPIO_Configuration PROC
;;;90     */
;;;91     void GPIO_Configuration(void)
000000  b508              PUSH     {r3,lr}
;;;92     {
;;;93     	GPIO_InitTypeDef GPIO_InitStructure;
;;;94     
;;;95     	/* 第1步:打开GPIOA GPIOC GPIOD GPIOF GPIOG的时钟
;;;96     	   注意:这个地方可以一次性全打开
;;;97     	*/
;;;98     	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC
000002  2101              MOVS     r1,#1
000004  f44f70da          MOV      r0,#0x1b4
000008  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;99     			| RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG,
;;;100    				ENABLE);
;;;101    
;;;102    	/* 第2步:配置所有的按键GPIO为浮动输入模式(实际上CPUf复位后就是输入状态) */
;;;103    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
00000c  2001              MOVS     r0,#1
00000e  f8ad0000          STRH     r0,[sp,#0]
;;;104    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
000012  2004              MOVS     r0,#4
000014  f88d0003          STRB     r0,[sp,#3]
;;;105    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000018  2003              MOVS     r0,#3
00001a  f88d0002          STRB     r0,[sp,#2]
;;;106    	GPIO_Init(GPIOA, &GPIO_InitStructure);	/* PA0 */
00001e  4669              MOV      r1,sp
000020  4816              LDR      r0,|L2.124|
000022  f7fffffe          BL       GPIO_Init
;;;107    
;;;108    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
000026  f44f5000          MOV      r0,#0x2000
00002a  f8ad0000          STRH     r0,[sp,#0]
;;;109    	GPIO_Init(GPIOC, &GPIO_InitStructure);	/* PC13 */
00002e  4669              MOV      r1,sp
000030  4813              LDR      r0,|L2.128|
000032  f7fffffe          BL       GPIO_Init
;;;110    
;;;111    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
000036  2008              MOVS     r0,#8
000038  f8ad0000          STRH     r0,[sp,#0]
;;;112    	GPIO_Init(GPIOD, &GPIO_InitStructure);	/* PD3 */
00003c  4669              MOV      r1,sp
00003e  4811              LDR      r0,|L2.132|
000040  f7fffffe          BL       GPIO_Init
;;;113    
;;;114    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_13
000044  f24e1080          MOV      r0,#0xe180
000048  f8ad0000          STRH     r0,[sp,#0]
;;;115    					  | GPIO_Pin_14 | GPIO_Pin_15;
;;;116    	GPIO_Init(GPIOG, &GPIO_InitStructure);	/* PG7,8,13,14,15 */
00004c  4669              MOV      r1,sp
00004e  480e              LDR      r0,|L2.136|
000050  f7fffffe          BL       GPIO_Init
;;;117    
;;;118    	/* 第3步:配置所有的LED指示灯GPIO为推挽输出模式 */
;;;119    	/* 由于将GPIO设置为输出时,GPIO输出寄存器的值缺省是0,因此会驱动LED点亮
;;;120    		这是我不希望的,因此在改变GPIO为输出前,先修改输出寄存器的值为1 */
;;;121    	GPIO_SetBits(GPIOF,  GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9);
000054  f44f7170          MOV      r1,#0x3c0
000058  480c              LDR      r0,|L2.140|
00005a  f7fffffe          BL       GPIO_SetBits
;;;122    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
00005e  f44f7070          MOV      r0,#0x3c0
000062  f8ad0000          STRH     r0,[sp,#0]
;;;123    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
000066  2010              MOVS     r0,#0x10
000068  f88d0003          STRB     r0,[sp,#3]
;;;124    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
00006c  2003              MOVS     r0,#3
00006e  f88d0002          STRB     r0,[sp,#2]
;;;125    	GPIO_Init(GPIOF, &GPIO_InitStructure);
000072  4669              MOV      r1,sp
000074  4805              LDR      r0,|L2.140|
000076  f7fffffe          BL       GPIO_Init
;;;126    }
00007a  bd08              POP      {r3,pc}
;;;127    
                          ENDP

                  |L2.124|
                          DCD      0x40010800
                  |L2.128|
                          DCD      0x40011000
                  |L2.132|
                          DCD      0x40011400
                  |L2.136|
                          DCD      0x40012000
                  |L2.140|
                          DCD      0x40011c00

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

                  InitBoard PROC
;;;133    */
;;;134    static void InitBoard(void)
000000  b510              PUSH     {r4,lr}
;;;135    {
;;;136    	/*
;;;137    		这个函数是ST库中的函数,函数实体在
;;;138    		Libraries\CMSIS\Core\CM3\system_stm32f10x.c
;;;139    
;;;140    		配置内部Flash接口,初始化PLL,配置系统频率
;;;141    		系统时钟缺省配置为72MHz,你如果需要更改,则需要去修改相关的头文件中的宏定义
;;;142    	 */
;;;143    	SystemInit();
000002  f7fffffe          BL       SystemInit
;;;144    
;;;145    	/* 配置按键GPIO和LED GPIO */
;;;146    	GPIO_Configuration();
000006  f7fffffe          BL       GPIO_Configuration
;;;147    
;;;148    	/* 配置串口 */
;;;149    	USART_Configuration();
00000a  f7fffffe          BL       USART_Configuration
;;;150    
;;;151    	/* 在 SysTick_Config()前,必须先调用 */
;;;152    	InitButtonVar();
00000e  f7fffffe          BL       InitButtonVar
;;;153    
;;;154    	/* 配置systic作为1ms中断,这个函数在
;;;155    	\Libraries\CMSIS\Core\CM3\core_cm3.h */
;;;156    	SysTick_Config(SystemFrequency / 1000);
000012  4916              LDR      r1,|L3.108|
000014  6809              LDR      r1,[r1,#0]  ; SystemFrequency
000016  f44f727a          MOV      r2,#0x3e8
00001a  fbb1f0f2          UDIV     r0,r1,r2
00001e  f1b07f80          CMP      r0,#0x1000000
000022  d300              BCC      |L3.38|
000024  e01c              B        |L3.96|
                  |L3.38|
000026  f020417f          BIC      r1,r0,#0xff000000
00002a  1e49              SUBS     r1,r1,#1
00002c  f04f22e0          MOV      r2,#0xe000e000
000030  6151              STR      r1,[r2,#0x14]
000032  bf00              NOP      
000034  1751              ASRS     r1,r2,#29
000036  2900              CMP      r1,#0
000038  da05              BGE      |L3.70|
00003a  210f              MOVS     r1,#0xf
00003c  0109              LSLS     r1,r1,#4
00003e  4a0c              LDR      r2,|L3.112|
000040  230b              MOVS     r3,#0xb
000042  54d1              STRB     r1,[r2,r3]
000044  e004              B        |L3.80|
                  |L3.70|
000046  210f              MOVS     r1,#0xf
000048  0109              LSLS     r1,r1,#4
00004a  4a0a              LDR      r2,|L3.116|
00004c  1753              ASRS     r3,r2,#29
00004e  54d1              STRB     r1,[r2,r3]
                  |L3.80|
000050  bf00              NOP      
000052  2100              MOVS     r1,#0
000054  f04f22e0          MOV      r2,#0xe000e000
000058  6191              STR      r1,[r2,#0x18]
00005a  2107              MOVS     r1,#7
00005c  6111              STR      r1,[r2,#0x10]
00005e  bf00              NOP      
                  |L3.96|
;;;157    
;;;158    	/* 通过串口输出例程名和更新日期 */
;;;159    	PrintfLogo(EXAMPLE_NAME, EXAMPLE_DATE);
000060  a105              ADR      r1,|L3.120|
000062  a008              ADR      r0,|L3.132|
000064  f7fffffe          BL       PrintfLogo
;;;160    }
000068  bd10              POP      {r4,pc}
;;;161    
                          ENDP

00006a  0000              DCW      0x0000
                  |L3.108|
                          DCD      SystemFrequency
                  |L3.112|
                          DCD      0xe000ed18
                  |L3.116|
                          DCD      0xe000e400
                  |L3.120|
000078  323031302d30332d313600        DCB      "2010-03-16",0
000083  00                DCB      0
                  |L3.132|
000084  5446542044534f2044656d6f00        DCB      "TFT DSO Demo",0
000091  00                DCB      0
000092  00                DCB      0
000093  00                DCB      0

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

                  main PROC
;;;60     */
;;;61     int main(void)
000000  b510              PUSH     {r4,lr}
;;;62     {
;;;63     	InitBoard();	/* 为了是main函数看起来更简洁些,我们将初始化的代码封装到这个函数 */
000002  f7fffffe          BL       InitBoard
;;;64     	DispLogo();		/* 显示例程Logo */
000006  f7fffffe          BL       DispLogo
;;;65     	DsoMain();		/* 进入DSO主程序 */
00000a  f7fffffe          BL       DsoMain
;;;66     }
00000e  2000              MOVS     r0,#0
000010  bd10              POP      {r4,pc}
;;;67     
                          ENDP


                  __ARM_use_no_argv EQU 0

⌨️ 快捷键说明

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