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

📄 main.txt

📁 ST32 基于(英蓓特)STM32V100的EXTI程序 This example shows how to configure an external interrupt line. In t
💻 TXT
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o..\obj\main.o --depend=..\obj\main.d --device=DARMSTM --apcs=interwork -I..\..\library\inc -I..\..\library\src -I..\uvsion -IC:\Keil\ARM\INC\ST\STM32F10x --omf_browse=..\obj\main.crf main.c]
                          THUMB

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

                  GPIO_Configuration PROC
;;;149    void GPIO_Configuration(void)
;;;150    {
000000  b508              PUSH     {r3,lr}
;;;151      GPIO_InitTypeDef GPIO_InitStructure;
;;;152     
;;;153      /* Configure PC.06 as Output push-pull */
;;;154      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
000002  20c0              MOVS     r0,#0xc0
000004  f8adf8ad          STRH     r0,[sp,#0]
;;;155      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000008  2003              MOVS     r0,#3
00000a  f88df88d          STRB     r0,[sp,#2]
;;;156      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
00000e  2010              MOVS     r0,#0x10
000010  f88df88d          STRB     r0,[sp,#3]
;;;157      GPIO_Init(GPIOC, &GPIO_InitStructure);
000014  4669              MOV      r1,sp
000016  4857              LDR      r0,|L1.372|
000018  f7fff7ff          BL       GPIO_Init
;;;158        
;;;159      /* Configure PB9 as input floating (EXTI Line9) */
;;;160      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
00001c  f44ff44f          MOV      r0,#0x200
000020  f8adf8ad          STRH     r0,[sp,#0]
;;;161      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
000024  2004              MOVS     r0,#4
000026  f88df88d          STRB     r0,[sp,#3]
;;;162      GPIO_Init(GPIOB, &GPIO_InitStructure);
00002a  4669              MOV      r1,sp
00002c  4852              LDR      r0,|L1.376|
00002e  f7fff7ff          BL       GPIO_Init
;;;163    
;;;164      /* Configure PB9 as input floating (EXTI Line9) */
;;;165      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
000032  f44ff44f          MOV      r0,#0x2000
000036  f8adf8ad          STRH     r0,[sp,#0]
;;;166      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
00003a  2004              MOVS     r0,#4
00003c  f88df88d          STRB     r0,[sp,#3]
;;;167      GPIO_Init(GPIOC, &GPIO_InitStructure);
000040  4669              MOV      r1,sp
000042  484c              LDR      r0,|L1.372|
000044  f7fff7ff          BL       GPIO_Init
;;;168    }
000048  bd08              POP      {r3,pc}
                          ENDP

                  NVIC_Configuration PROC
;;;177    void NVIC_Configuration(void)
;;;178    {
00004a  b508              PUSH     {r3,lr}
;;;179      NVIC_InitTypeDef NVIC_InitStructure;
;;;180      
;;;181    #ifdef  VECT_TAB_RAM  
;;;182      /* Set the Vector Table base location at 0x20000000 */ 
;;;183      NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); 
;;;184    #else  /* VECT_TAB_FLASH  */
;;;185      /* Set the Vector Table base location at 0x08000000 */ 
;;;186      NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
00004c  2100              MOVS     r1,#0
00004e  f04ff04f          MOV      r0,#0x8000000
000052  f7fff7ff          BL       NVIC_SetVectorTable
;;;187    #endif
;;;188    
;;;189      /* Configure one bit for preemption priority */
;;;190      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
000056  f44ff44f          MOV      r0,#0x600
00005a  f7fff7ff          BL       NVIC_PriorityGroupConfig
;;;191      
;;;192      /* Enable the EXTI9_5 Interrupt
;;;193      NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
;;;194      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
;;;195      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
;;;196      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
;;;197      NVIC_Init(&NVIC_InitStructure);	*/
;;;198    
;;;199      /* Enable the EXTI9_5 Interrupt */
;;;200      NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
00005e  2017              MOVS     r0,#0x17
000060  f88df88d          STRB     r0,[sp,#0]
;;;201      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
000064  2000              MOVS     r0,#0
000066  f88df88d          STRB     r0,[sp,#1]
;;;202      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
00006a  f88df88d          STRB     r0,[sp,#2]
;;;203      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
00006e  2001              MOVS     r0,#1
000070  f88df88d          STRB     r0,[sp,#3]
;;;204      NVIC_Init(&NVIC_InitStructure);
000074  4668              MOV      r0,sp
000076  f7fff7ff          BL       NVIC_Init
;;;205    
;;;206      /* Enable the EXTI15_10 Interrupt */
;;;207      NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQChannel;
00007a  2028              MOVS     r0,#0x28
00007c  f88df88d          STRB     r0,[sp,#0]
;;;208      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
000080  2000              MOVS     r0,#0
000082  f88df88d          STRB     r0,[sp,#1]
;;;209      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
000086  f88df88d          STRB     r0,[sp,#2]
;;;210      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
00008a  2001              MOVS     r0,#1
00008c  f88df88d          STRB     r0,[sp,#3]
;;;211      NVIC_Init(&NVIC_InitStructure);
000090  4668              MOV      r0,sp
000092  f7fff7ff          BL       NVIC_Init
;;;212    }
000096  bd08              POP      {r3,pc}
                          ENDP

                  RCC_Configuration PROC
;;;90     void RCC_Configuration(void)
;;;91     {
000098  b510              PUSH     {r4,lr}
;;;92       /* RCC system reset(for debug purpose) */
;;;93       RCC_DeInit();
00009a  f7fff7ff          BL       RCC_DeInit
;;;94     
;;;95       /* Enable HSE */
;;;96       RCC_HSEConfig(RCC_HSE_ON);
00009e  f44ff44f          MOV      r0,#0x10000
0000a2  f7fff7ff          BL       RCC_HSEConfig
;;;97     
;;;98       /* Wait till HSE is ready */
;;;99       HSEStartUpStatus = RCC_WaitForHSEStartUp();
0000a6  f7fff7ff          BL       RCC_WaitForHSEStartUp
0000aa  4934              LDR      r1,|L1.380|
0000ac  7008              STRB     r0,[r1,#0]  ; HSEStartUpStatus
;;;100    
;;;101      if(HSEStartUpStatus == SUCCESS)
0000ae  4608              MOV      r0,r1
0000b0  7800              LDRB     r0,[r0,#0]  ; HSEStartUpStatus
0000b2  2801              CMP      r0,#1
0000b4  d126              BNE      |L1.260|
;;;102      {
;;;103        /* HCLK = SYSCLK */
;;;104        RCC_HCLKConfig(RCC_SYSCLK_Div1); 
0000b6  2000              MOVS     r0,#0
0000b8  f7fff7ff          BL       RCC_HCLKConfig
;;;105      
;;;106        /* PCLK2 = HCLK */
;;;107        RCC_PCLK2Config(RCC_HCLK_Div1); 
0000bc  2000              MOVS     r0,#0
0000be  f7fff7ff          BL       RCC_PCLK2Config
;;;108    
;;;109        /* PCLK1 = HCLK/2 */
;;;110        RCC_PCLK1Config(RCC_HCLK_Div2);
0000c2  f44ff44f          MOV      r0,#0x400
0000c6  f7fff7ff          BL       RCC_PCLK1Config
;;;111    
;;;112        /* Flash 2 wait state */
;;;113        FLASH_SetLatency(FLASH_Latency_2);
0000ca  2002              MOVS     r0,#2
0000cc  f7fff7ff          BL       FLASH_SetLatency
;;;114        /* Enable Prefetch Buffer */
;;;115        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
0000d0  2010              MOVS     r0,#0x10
0000d2  f7fff7ff          BL       FLASH_PrefetchBufferCmd
;;;116    
;;;117        /* PLLCLK = 8MHz * 9 = 72 MHz */
;;;118        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
0000d6  f44ff44f          MOV      r1,#0x1c0000
0000da  f44ff44f          MOV      r0,#0x10000
0000de  f7fff7ff          BL       RCC_PLLConfig
;;;119    
;;;120        /* Enable PLL */ 
;;;121        RCC_PLLCmd(ENABLE);
0000e2  2001              MOVS     r0,#1
0000e4  f7fff7ff          BL       RCC_PLLCmd
;;;122    
;;;123        /* Wait till PLL is ready */
;;;124        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
0000e8  bf00              NOP      
                  |L1.234|
0000ea  2039              MOVS     r0,#0x39
0000ec  f7fff7ff          BL       RCC_GetFlagStatus
0000f0  2800              CMP      r0,#0
0000f2  d0fa              BEQ      |L1.234|
;;;125        {
;;;126        }
;;;127    
;;;128        /* Select PLL as system clock source */
;;;129        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
0000f4  2002              MOVS     r0,#2
0000f6  f7fff7ff          BL       RCC_SYSCLKConfig
;;;130    
;;;131        /* Wait till PLL is used as system clock source */
;;;132        while(RCC_GetSYSCLKSource() != 0x08)
0000fa  bf00              NOP      
                  |L1.252|
0000fc  f7fff7ff          BL       RCC_GetSYSCLKSource
000100  2808              CMP      r0,#8
000102  d1fb              BNE      |L1.252|
                  |L1.260|
;;;133        {
;;;134        }
;;;135      }
;;;136       
;;;137      /* Enable GPIOB, GPIOC and AFIO clock */
;;;138      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC  |RCC_APB2Periph_GPIOE
000104  2101              MOVS     r1,#1
000106  2059              MOVS     r0,#0x59
000108  f7fff7ff          BL       RCC_APB2PeriphClockCmd
;;;139                             | RCC_APB2Periph_AFIO, ENABLE);
;;;140    }
00010c  bd10              POP      {r4,pc}
                          ENDP

                  main PROC
;;;43     int main(void)
;;;44     {
00010e  b510              PUSH     {r4,lr}
;;;45     #ifdef DEBUG
;;;46       debug();
;;;47     #endif
;;;48       
;;;49       /* System Clocks Configuration */
;;;50       RCC_Configuration();
000110  f7fff7ff          BL       RCC_Configuration
;;;51            
;;;52       /* NVIC configuration */
;;;53       NVIC_Configuration();
000114  f7fff7ff          BL       NVIC_Configuration
;;;54         
;;;55       /* Configure the GPIO ports */
;;;56       GPIO_Configuration();
000118  f7fff7ff          BL       GPIO_Configuration
;;;57       
;;;58       /* Connect EXTI Line9 to PB.09 */
;;;59       GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
00011c  2109              MOVS     r1,#9
00011e  2001              MOVS     r0,#1
000120  f7fff7ff          BL       GPIO_EXTILineConfig
;;;60       GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);
000124  210d              MOVS     r1,#0xd
000126  2002              MOVS     r0,#2
000128  f7fff7ff          BL       GPIO_EXTILineConfig
;;;61     
;;;62       /* Configure EXTI Line9 to generate an interrupt on falling edge */  
;;;63       EXTI_InitStructure.EXTI_Line = EXTI_Line9;
00012c  f44ff44f          MOV      r0,#0x200
000130  4913              LDR      r1,|L1.384|
000132  6008              STR      r0,[r1,#0]  ; EXTI_InitStructure
;;;64       EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
000134  2000              MOVS     r0,#0
000136  7108              STRB     r0,[r1,#4]  ; EXTI_InitStructure
;;;65       EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
000138  200c              MOVS     r0,#0xc
00013a  7148              STRB     r0,[r1,#5]  ; EXTI_InitStructure
;;;66       EXTI_InitStructure.EXTI_LineCmd = ENABLE;
00013c  2001              MOVS     r0,#1
00013e  7188              STRB     r0,[r1,#6]  ; EXTI_InitStructure
;;;67       EXTI_Init(&EXTI_InitStructure);
000140  4608              MOV      r0,r1
000142  f7fff7ff          BL       EXTI_Init
;;;68     
;;;69       EXTI_InitStructure.EXTI_Line = EXTI_Line13;
000146  f44ff44f          MOV      r0,#0x2000
00014a  490d              LDR      r1,|L1.384|
00014c  6008              STR      r0,[r1,#0]  ; EXTI_InitStructure
;;;70       EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
00014e  2000              MOVS     r0,#0
000150  7108              STRB     r0,[r1,#4]  ; EXTI_InitStructure
;;;71       EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
000152  200c              MOVS     r0,#0xc
000154  7148              STRB     r0,[r1,#5]  ; EXTI_InitStructure
;;;72       EXTI_InitStructure.EXTI_LineCmd = ENABLE;
000156  2001              MOVS     r0,#1
000158  7188              STRB     r0,[r1,#6]  ; EXTI_InitStructure
;;;73       EXTI_Init(&EXTI_InitStructure);
00015a  4608              MOV      r0,r1
00015c  f7fff7ff          BL       EXTI_Init
;;;74     
;;;75       /* Generate software interrupt: simulate a falling edge applied on EXTI line 9 */
;;;76       EXTI_GenerateSWInterrupt(EXTI_Line9);
000160  f44ff44f          MOV      r0,#0x200
000164  f7fff7ff          BL       EXTI_GenerateSWInterrupt
;;;77       EXTI_GenerateSWInterrupt(EXTI_Line13);      
000168  f44ff44f          MOV      r0,#0x2000
00016c  f7fff7ff          BL       EXTI_GenerateSWInterrupt
;;;78       while (1)
000170  bf00              NOP      
                  |L1.370|
000172  e7fe              B        |L1.370|
;;;79       {
;;;80       }
;;;81     }
                          ENDP

                  |L1.372|
000174  40011000          DCD      0x40011000
                  |L1.376|
000178  40010c00          DCD      0x40010c00
                  |L1.380|
00017c  00000000          DCD      HSEStartUpStatus
                  |L1.384|
000180  00000000          DCD      EXTI_InitStructure

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

                  EXTI_InitStructure
                          %        8
                  HSEStartUpStatus
000008  00                DCB      0x00

                  __ARM_use_no_argv EQU 0

⌨️ 快捷键说明

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