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

📄 main.txt

📁 STM32 ARM 处理器的ADC采样源代码
💻 TXT
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 902] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o..\Obj\main.o --depend=..\Obj\main.d --device=DARMSTM -I..\..\..\..\..\INC\ST\STM32F10x -IC:\Keil\ARM\INC\ST\STM32F10x -DVECT_TAB_FLASH --omf_browse=..\Obj\main.crf main.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  NVIC_Configuration PROC
;;;194    void NVIC_Configuration(void)
;;;195    {
000000  b510              PUSH     {r4,lr}
;;;196    #ifdef  VECT_TAB_RAM  
;;;197      /* Set the Vector Table base location at 0x20000000 */ 
;;;198      NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); 
;;;199    #else  /* VECT_TAB_FLASH  */
;;;200      /* Set the Vector Table base location at 0x08000000 */ 
;;;201      NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
000002  2100              MOVS     r1,#0
000004  4608              MOV      r0,r1
000006  f7fff7ff          BL       NVIC_SetVectorTable
;;;202    #endif
;;;203    }
00000a  bd10              POP      {r4,pc}
                          ENDP

                  GPIO_Configuration PROC
;;;174    void GPIO_Configuration(void)
;;;175    {
00000c  b508              PUSH     {r3,lr}
;;;176      GPIO_InitTypeDef GPIO_InitStructure;
;;;177    
;;;178      /* Enable GPIOC clock */
;;;179      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);
00000e  2101              MOVS     r1,#1
000010  2010              MOVS     r0,#0x10
000012  f7fff7ff          BL       RCC_APB2PeriphClockCmd
;;;180    
;;;181      /* Configure Pc.04 (ADC Channel14) as analog input */
;;;182      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
000016  2010              MOVS     r0,#0x10
000018  f8adf8ad          STRH     r0,[sp,#0]
;;;183      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
00001c  2000              MOVS     r0,#0
00001e  f88df88d          STRB     r0,[sp,#3]
;;;184      GPIO_Init(GPIOC, &GPIO_InitStructure);
000022  4669              MOV      r1,sp
000024  4848              LDR      r0,|L1.328|
000026  f7fff7ff          BL       GPIO_Init
;;;185    }
00002a  bd08              POP      {r3,pc}
                          ENDP

                  RCC_Configuration PROC
;;;113    void RCC_Configuration(void)
;;;114    {
00002c  b510              PUSH     {r4,lr}
;;;115      /* RCC system reset(for debug purpose) */
;;;116      RCC_DeInit();
00002e  f7fff7ff          BL       RCC_DeInit
;;;117    
;;;118      /* Enable HSE */
;;;119      RCC_HSEConfig(RCC_HSE_ON);
000032  f44ff44f          MOV      r0,#0x10000
000036  f7fff7ff          BL       RCC_HSEConfig
;;;120    
;;;121      /* Wait till HSE is ready */
;;;122      while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET)
00003a  bf00              NOP      
                  |L1.60|
00003c  2031              MOVS     r0,#0x31
00003e  f7fff7ff          BL       RCC_GetFlagStatus
000042  2800              CMP      r0,#0
000044  d0fa              BEQ      |L1.60|
;;;123      {
;;;124      }
;;;125    
;;;126      /* HCLK = SYSCLK */
;;;127      RCC_HCLKConfig(RCC_SYSCLK_Div1); 
000046  2000              MOVS     r0,#0
000048  f7fff7ff          BL       RCC_HCLKConfig
;;;128      
;;;129      /* PCLK2 = HCLK */
;;;130      RCC_PCLK2Config(RCC_HCLK_Div1); 
00004c  2000              MOVS     r0,#0
00004e  f7fff7ff          BL       RCC_PCLK2Config
;;;131    
;;;132      /* PCLK1 = HCLK/2 */
;;;133      RCC_PCLK1Config(RCC_HCLK_Div2);
000052  f44ff44f          MOV      r0,#0x400
000056  f7fff7ff          BL       RCC_PCLK1Config
;;;134    
;;;135      /* ADCCLK = PCLK2/4 */
;;;136      RCC_ADCCLKConfig(RCC_PCLK2_Div4);
00005a  f44ff44f          MOV      r0,#0x4000
00005e  f7fff7ff          BL       RCC_ADCCLKConfig
;;;137    
;;;138      /* Flash 1 wait state */
;;;139      *(vu32 *)0x40022000 = 0x01;
000062  2001              MOVS     r0,#1
000064  4939              LDR      r1,|L1.332|
000066  6008              STR      r0,[r1,#0]
;;;140    
;;;141      /* PLLCLK = 8MHz * 7 = 56 MHz */
;;;142      RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_7);
000068  f44ff44f          MOV      r1,#0x140000
00006c  0400              LSLS     r0,r0,#16
00006e  f7fff7ff          BL       RCC_PLLConfig
;;;143    
;;;144      /* Enable PLL */ 
;;;145      RCC_PLLCmd(ENABLE);
000072  2001              MOVS     r0,#1
000074  f7fff7ff          BL       RCC_PLLCmd
;;;146    
;;;147      /* Wait till PLL is ready */
;;;148      while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
000078  bf00              NOP      
                  |L1.122|
00007a  2039              MOVS     r0,#0x39
00007c  f7fff7ff          BL       RCC_GetFlagStatus
000080  2800              CMP      r0,#0
000082  d0fa              BEQ      |L1.122|
;;;149      {
;;;150      }
;;;151    
;;;152      /* Select PLL as system clock source */
;;;153      RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
000084  2002              MOVS     r0,#2
000086  f7fff7ff          BL       RCC_SYSCLKConfig
;;;154    
;;;155      /* Wait till PLL is used as system clock source */
;;;156      while(RCC_GetSYSCLKSource() != 0x08)
00008a  bf00              NOP      
                  |L1.140|
00008c  f7fff7ff          BL       RCC_GetSYSCLKSource
000090  2808              CMP      r0,#8
000092  d1fb              BNE      |L1.140|
;;;157      {
;;;158      }
;;;159    
;;;160      /* Enable DMA clock */
;;;161      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE);
000094  2101              MOVS     r1,#1
000096  4608              MOV      r0,r1
000098  f7fff7ff          BL       RCC_AHBPeriphClockCmd
;;;162    
;;;163      /* Enable ADC1 clock */
;;;164      RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
00009c  2101              MOVS     r1,#1
00009e  0248              LSLS     r0,r1,#9
0000a0  f7fff7ff          BL       RCC_APB2PeriphClockCmd
;;;165    }
0000a4  bd10              POP      {r4,pc}
                          ENDP

                  main PROC
;;;46     int main(void)
;;;47     {
0000a6  b510              PUSH     {r4,lr}
;;;48     #ifdef DEBUG
;;;49       debug();
;;;50     #endif
;;;51     
;;;52       /* System Clocks Configuration ---------------------------------------------*/
;;;53       RCC_Configuration();
0000a8  f7fff7ff          BL       RCC_Configuration
;;;54     
;;;55       /* GPIO Configuration ------------------------------------------------------*/
;;;56       GPIO_Configuration();
0000ac  f7fff7ff          BL       GPIO_Configuration
;;;57     
;;;58       /* NVIC configuration ------------------------------------------------------*/
;;;59       NVIC_Configuration();
0000b0  f7fff7ff          BL       NVIC_Configuration
;;;60     
;;;61       /* DMA Channel1 Configuration ----------------------------------------------*/
;;;62      DMA_DeInit(DMA_Channel1);
0000b4  4826              LDR      r0,|L1.336|
0000b6  f7fff7ff          BL       DMA_DeInit
;;;63       DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;
0000ba  4826              LDR      r0,|L1.340|
0000bc  4926              LDR      r1,|L1.344|
0000be  6008              STR      r0,[r1,#0]  ; DMA_InitStructure
;;;64       DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue;
0000c0  4826              LDR      r0,|L1.348|
0000c2  6048              STR      r0,[r1,#4]  ; DMA_InitStructure
;;;65       DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
0000c4  2000              MOVS     r0,#0
0000c6  6088              STR      r0,[r1,#8]  ; DMA_InitStructure
;;;66       DMA_InitStructure.DMA_BufferSize = 1;
0000c8  2001              MOVS     r0,#1
0000ca  60c8              STR      r0,[r1,#0xc]  ; DMA_InitStructure
;;;67       DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
0000cc  2000              MOVS     r0,#0
0000ce  6108              STR      r0,[r1,#0x10]  ; DMA_InitStructure
;;;68       DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
0000d0  6148              STR      r0,[r1,#0x14]  ; DMA_InitStructure
;;;69       DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
0000d2  f44ff44f          MOV      r0,#0x100
0000d6  6188              STR      r0,[r1,#0x18]  ; DMA_InitStructure
;;;70       DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
0000d8  0080              LSLS     r0,r0,#2
0000da  61c8              STR      r0,[r1,#0x1c]  ; DMA_InitStructure
;;;71       DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
0000dc  2020              MOVS     r0,#0x20
0000de  6208              STR      r0,[r1,#0x20]  ; DMA_InitStructure
;;;72       DMA_InitStructure.DMA_Priority = DMA_Priority_High;
0000e0  0200              LSLS     r0,r0,#8
0000e2  6248              STR      r0,[r1,#0x24]  ; DMA_InitStructure
;;;73       DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
0000e4  2000              MOVS     r0,#0
0000e6  6288              STR      r0,[r1,#0x28]  ; DMA_InitStructure
;;;74       DMA_Init(DMA_Channel1, &DMA_InitStructure);
0000e8  4819              LDR      r0,|L1.336|
0000ea  f7fff7ff          BL       DMA_Init
;;;75       
;;;76       /* Enable DMA Channel1 */
;;;77       DMA_Cmd(DMA_Channel1, ENABLE);
0000ee  2101              MOVS     r1,#1
0000f0  4817              LDR      r0,|L1.336|
0000f2  f7fff7ff          BL       DMA_Cmd
;;;78       
;;;79         
;;;80       /* ADCx Configuration (ADC1CLK = 14 MHz) -----------------------------------*/
;;;81        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
0000f6  2000              MOVS     r0,#0
0000f8  4919              LDR      r1,|L1.352|
0000fa  6008              STR      r0,[r1,#0]  ; ADC_InitStructure
;;;82       ADC_InitStructure.ADC_ScanConvMode = ENABLE;
0000fc  2001              MOVS     r0,#1
0000fe  7108              STRB     r0,[r1,#4]  ; ADC_InitStructure
;;;83       ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
000100  7148              STRB     r0,[r1,#5]  ; ADC_InitStructure
;;;84       ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
000102  f44ff44f          MOV      r0,#0xe0000
000106  6088              STR      r0,[r1,#8]  ; ADC_InitStructure
;;;85       ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
000108  2000              MOVS     r0,#0
00010a  60c8              STR      r0,[r1,#0xc]  ; ADC_InitStructure
;;;86       ADC_InitStructure.ADC_NbrOfChannel = 1;
00010c  2001              MOVS     r0,#1
00010e  7408              STRB     r0,[r1,#0x10]  ; ADC_InitStructure
;;;87       ADC_Init(ADC1, &ADC_InitStructure);
000110  4810              LDR      r0,|L1.340|
000112  384c              SUBS     r0,r0,#0x4c
000114  f7fff7ff          BL       ADC_Init
;;;88     
;;;89       /* ADCx Regular Channel14 Configuration */ 
;;;90      ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_55Cycles5);
000118  2305              MOVS     r3,#5
00011a  2201              MOVS     r2,#1
00011c  210e              MOVS     r1,#0xe
00011e  480d              LDR      r0,|L1.340|
000120  384c              SUBS     r0,r0,#0x4c
000122  f7fff7ff          BL       ADC_RegularChannelConfig
;;;91     
;;;92       /* Enable ADCx's DMA interface */
;;;93      ADC_DMACmd(ADC1, ENABLE);
000126  2101              MOVS     r1,#1
000128  480a              LDR      r0,|L1.340|
00012a  384c              SUBS     r0,r0,#0x4c
00012c  f7fff7ff          BL       ADC_DMACmd
;;;94       
;;;95       /* Enable ADCx */
;;;96      ADC_Cmd(ADC1, ENABLE);
000130  2101              MOVS     r1,#1
000132  4808              LDR      r0,|L1.340|
000134  384c              SUBS     r0,r0,#0x4c
000136  f7fff7ff          BL       ADC_Cmd
;;;97        
;;;98       /* Start ADC1 Software Conversion */ 
;;;99        ADC_SoftwareStartConvCmd(ADC1, ENABLE);
00013a  2101              MOVS     r1,#1
00013c  4805              LDR      r0,|L1.340|
00013e  384c              SUBS     r0,r0,#0x4c
000140  f7fff7ff          BL       ADC_SoftwareStartConvCmd
;;;100    
;;;101      while(1)
000144  bf00              NOP      
                  |L1.326|
000146  e7fe              B        |L1.326|
;;;102      {
;;;103      }
;;;104    }
                          ENDP

                  |L1.328|
000148  40011000          DCD      0x40011000
                  |L1.332|
00014c  40022000          DCD      0x40022000
                  |L1.336|
000150  40020008          DCD      0x40020008
                  |L1.340|
000154  4001244c          DCD      0x4001244c
                  |L1.344|
000158  00000000          DCD      DMA_InitStructure
                  |L1.348|
00015c  00000000          DCD      ADC_ConvertedValue
                  |L1.352|
000160  00000000          DCD      ADC_InitStructure

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

                  ADC_ConvertedValue
000000  0000              DCB      0x00,0x00

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

                  ADC_InitStructure
                          %        20
                  DMA_InitStructure
                          %        44

                  __ARM_use_no_argv EQU 0

⌨️ 快捷键说明

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