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

📄 main.txt

📁 STM32的ADC例程
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 938] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\obj\main.o --depend=.\obj\main.d --device=DARMSTM --apcs=interwork -O3 -I..\..\library\inc -I..\..\library\src -I..\uvsion -ID:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\obj\main.crf main.c]
                          THUMB

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

                  USART_Configuration1 PROC
;;;282    void USART_Configuration1(void)
;;;283    {
000000  b530              PUSH     {r4,r5,lr}
000002  b089              SUB      sp,sp,#0x24
;;;284      USART_InitTypeDef USART_InitStructure;
;;;285      USART_ClockInitTypeDef  USART_ClockInitStructure;
;;;286    /* USART1 configuration ------------------------------------------------------*/
;;;287      /* USART1 configured as follow:
;;;288            - BaudRate = 115200 baud  
;;;289            - Word Length = 8 Bits
;;;290            - One Stop Bit
;;;291            - No parity
;;;292            - Hardware flow control disabled (RTS and CTS signals)
;;;293            - Receive and transmit enabled
;;;294            - USART Clock disabled
;;;295            - USART CPOL: Clock is active low
;;;296            - USART CPHA: Data is captured on the middle 
;;;297            - USART LastBit: The clock pulse of the last data bit is not output to 
;;;298                             the SCLK pin
;;;299      */
;;;300      USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;
000004  2400              MOVS     r4,#0
;;;301    USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
;;;302    USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;
000006  f44f7000          MOV      r0,#0x200
00000a  f8ad0008          STRH     r0,[sp,#8]
;;;303    USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;
;;;304    /* Configure the USART1 synchronous paramters */
;;;305    USART_ClockInit(USART1, &USART_ClockInitStructure);
00000e  4d11              LDR      r5,|L1.84|
000010  f8ad4004          STRH     r4,[sp,#4]            ;300
000014  f8ad4006          STRH     r4,[sp,#6]            ;301
000018  f8ad400a          STRH     r4,[sp,#0xa]          ;303
00001c  a901              ADD      r1,sp,#4
00001e  4628              MOV      r0,r5
000020  f7fffffe          BL       USART_ClockInit
;;;306    
;;;307    USART_InitStructure.USART_BaudRate = 115200;
000024  f44f30e1          MOV      r0,#0x1c200
;;;308    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
000028  9003              STR      r0,[sp,#0xc]
;;;309    USART_InitStructure.USART_StopBits = USART_StopBits_1;
;;;310    USART_InitStructure.USART_Parity = USART_Parity_No ;
00002a  f8ad4014          STRH     r4,[sp,#0x14]
;;;311    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
;;;312    
;;;313    
;;;314    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
00002e  200c              MOVS     r0,#0xc
000030  f8ad4010          STRH     r4,[sp,#0x10]         ;308
000034  f8ad0016          STRH     r0,[sp,#0x16]
000038  f8ad4012          STRH     r4,[sp,#0x12]         ;309
00003c  f8ad4018          STRH     r4,[sp,#0x18]         ;311
;;;315    /* Configure USART1 basic and asynchronous paramters */
;;;316    USART_Init(USART1, &USART_InitStructure);
000040  a903              ADD      r1,sp,#0xc
000042  4628              MOV      r0,r5
000044  f7fffffe          BL       USART_Init
;;;317      /* Enable USART1 */
;;;318      USART_Cmd(USART1, ENABLE);
000048  2101              MOVS     r1,#1
00004a  4628              MOV      r0,r5
00004c  f7fffffe          BL       USART_Cmd
;;;319    }
000050  b009              ADD      sp,sp,#0x24
000052  bd30              POP      {r4,r5,pc}
;;;320     
                          ENDP

                  |L1.84|
000054  40013800          DCD      0x40013800

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

                  GPIO_Configuration PROC
;;;214    void GPIO_Configuration(void)
;;;215    {
000000  b538              PUSH     {r3-r5,lr}
;;;216      GPIO_InitTypeDef GPIO_InitStructure;
;;;217    
;;;218      /* Configure PC.04 (ADC Channel14) as analog input -------------------------*/
;;;219      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
000002  2010              MOVS     r0,#0x10
000004  f8ad0000          STRH     r0,[sp,#0]
;;;220      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
000008  2000              MOVS     r0,#0
00000a  f88d0003          STRB     r0,[sp,#3]
;;;221      GPIO_Init(GPIOC, &GPIO_InitStructure);
00000e  4669              MOV      r1,sp
000010  480e              LDR      r0,|L2.76|
000012  f7fffffe          BL       GPIO_Init
;;;222    
;;;223       /* Configure USART1 Tx (PA.09) as alternate function push-pull */
;;;224      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
000016  f44f7000          MOV      r0,#0x200
00001a  f8ad0000          STRH     r0,[sp,#0]
;;;225      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
00001e  2018              MOVS     r0,#0x18
000020  f88d0003          STRB     r0,[sp,#3]
;;;226      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000024  2003              MOVS     r0,#3
;;;227      GPIO_Init(GPIOA, &GPIO_InitStructure);
000026  4c0a              LDR      r4,|L2.80|
000028  f88d0002          STRB     r0,[sp,#2]            ;226
00002c  4669              MOV      r1,sp
00002e  4620              MOV      r0,r4
000030  f7fffffe          BL       GPIO_Init
;;;228        
;;;229      /* Configure USART1 Rx (PA.10) as input floating */
;;;230      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
000034  1520              ASRS     r0,r4,#20
000036  f8ad0000          STRH     r0,[sp,#0]
;;;231      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
00003a  2004              MOVS     r0,#4
00003c  f88d0003          STRB     r0,[sp,#3]
;;;232      GPIO_Init(GPIOA, &GPIO_InitStructure);
000040  4669              MOV      r1,sp
000042  4620              MOV      r0,r4
000044  f7fffffe          BL       GPIO_Init
;;;233    
;;;234    }
000048  bd38              POP      {r3-r5,pc}
;;;235    
                          ENDP

00004a  0000              DCW      0x0000
                  |L2.76|
00004c  40011000          DCD      0x40011000
                  |L2.80|
000050  40010800          DCD      0x40010800

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

                  NVIC_Configuration PROC
000000  2100              MOVS     r1,#0
000002  f04f6000          MOV      r0,#0x8000000
000006  f7ffbffe          B.W      NVIC_SetVectorTable
                          ENDP


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

                  RCC_Configuration PROC
;;;146    void RCC_Configuration(void)
;;;147    {
000000  b510              PUSH     {r4,lr}
;;;148      /* RCC system reset(for debug purpose) */
;;;149      RCC_DeInit();
000002  f7fffffe          BL       RCC_DeInit
;;;150    
;;;151      /* Enable HSE */
;;;152      RCC_HSEConfig(RCC_HSE_ON);
000006  f44f3480          MOV      r4,#0x10000
00000a  4620              MOV      r0,r4
00000c  f7fffffe          BL       RCC_HSEConfig
;;;153    
;;;154      /* Wait till HSE is ready */
;;;155      HSEStartUpStatus = RCC_WaitForHSEStartUp();
000010  f7fffffe          BL       RCC_WaitForHSEStartUp
000014  491d              LDR      r1,|L4.140|
000016  7048              STRB     r0,[r1,#1]  ; HSEStartUpStatus
;;;156    
;;;157      if(HSEStartUpStatus == SUCCESS)
000018  b2c0              UXTB     r0,r0
00001a  2801              CMP      r0,#1
00001c  d126              BNE      |L4.108|
;;;158      {
;;;159        /* HCLK = SYSCLK */
;;;160        RCC_HCLKConfig(RCC_SYSCLK_Div1); 
00001e  2000              MOVS     r0,#0
000020  f7fffffe          BL       RCC_HCLKConfig
;;;161      
;;;162        /* PCLK2 = HCLK */
;;;163        RCC_PCLK2Config(RCC_HCLK_Div1); 
000024  2000              MOVS     r0,#0
000026  f7fffffe          BL       RCC_PCLK2Config
;;;164    
;;;165        /* PCLK1 = HCLK/2 */
;;;166        RCC_PCLK1Config(RCC_HCLK_Div2);
00002a  11a0              ASRS     r0,r4,#6
00002c  f7fffffe          BL       RCC_PCLK1Config
;;;167    
;;;168        /* ADCCLK = PCLK2/4 */
;;;169        RCC_ADCCLKConfig(RCC_PCLK2_Div4); 
000030  10a0              ASRS     r0,r4,#2
000032  f7fffffe          BL       RCC_ADCCLKConfig
;;;170      
;;;171        /* Flash 2 wait state */
;;;172        FLASH_SetLatency(FLASH_Latency_2);
000036  2002              MOVS     r0,#2
000038  f7fffffe          BL       FLASH_SetLatency
;;;173        /* Enable Prefetch Buffer */
;;;174        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
00003c  2010              MOVS     r0,#0x10
00003e  f7fffffe          BL       FLASH_PrefetchBufferCmd
;;;175    
;;;176        /* PLLCLK = 8MHz * 9 = 56 MHz */
;;;177        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
000042  f44f11e0          MOV      r1,#0x1c0000
000046  4620              MOV      r0,r4
000048  f7fffffe          BL       RCC_PLLConfig
;;;178    
;;;179        /* Enable PLL */ 
;;;180        RCC_PLLCmd(ENABLE);
00004c  2001              MOVS     r0,#1
00004e  f7fffffe          BL       RCC_PLLCmd
                  |L4.82|
;;;181    
;;;182        /* Wait till PLL is ready */
;;;183        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
000052  2039              MOVS     r0,#0x39
000054  f7fffffe          BL       RCC_GetFlagStatus
000058  2800              CMP      r0,#0
00005a  d0fa              BEQ      |L4.82|
;;;184        {
;;;185        }
;;;186    
;;;187        /* Select PLL as system clock source */
;;;188        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
00005c  2002              MOVS     r0,#2
00005e  f7fffffe          BL       RCC_SYSCLKConfig
;;;189    
;;;190        /* Wait till PLL is used as system clock source */
;;;191        while(RCC_GetSYSCLKSource() != 0x08)
000062  bf00              NOP      
                  |L4.100|
000064  f7fffffe          BL       RCC_GetSYSCLKSource
000068  2808              CMP      r0,#8
00006a  d1fb              BNE      |L4.100|
                  |L4.108|
;;;192        {
;;;193        }
;;;194      }
;;;195    
;;;196    /* Enable peripheral clocks --------------------------------------------------*/
;;;197      /* Enable DMA clock */
;;;198      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
00006c  2101              MOVS     r1,#1
00006e  4608              MOV      r0,r1
000070  f7fffffe          BL       RCC_AHBPeriphClockCmd
;;;199    
;;;200      /* Enable ADC1 and GPIOC clock */
;;;201      RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE);
000074  2101              MOVS     r1,#1
000076  f44f7004          MOV      r0,#0x210
00007a  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;202    
;;;203      /* Enable USART1 and GPIOA clock */
;;;204      RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
00007e  e8bd4010          POP      {r4,lr}
000082  2101              MOVS     r1,#1
000084  f2440004          MOV      r0,#0x4004
000088  f7ffbffe          B.W      RCC_APB2PeriphClockCmd
;;;205    }
;;;206    
                          ENDP

                  |L4.140|
00008c  00000000          DCD      ||.data||

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

                  main PROC
;;;53     int main(void)
;;;54     {
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;55     #ifdef DEBUG
;;;56       debug();
;;;57     #endif
;;;58     

⌨️ 快捷键说明

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