OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3327|回复: 8

STM32启动文件中最后部分代码的意思

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-5-25
在线时间
1 小时
发表于 2016-5-25 21:45:41 | 显示全部楼层 |阅读模式
8金钱

;******************************************************************************
;                          DEFAULT HANDLERS
;******************************************************************************

App_NMI_ISR         B       App_NMI_ISR

App_Fault_ISR       B       App_Fault_ISR

App_MemFault_ISR    B       App_MemFault_ISR

App_BusFault_ISR    B       App_BusFault_ISR

App_UsageFault_ISR  B       App_UsageFault_ISR

App_Spurious_ISR    B       App_Spurious_ISR
最近开始学习STM32,先看的启动文件,里面最后有段代码(如上所示),我不明白什么意思,网上也没搜到,问同事也不知道,我只知道B是跳转指令,求各位大神、版主详解。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-5-25 22:03:13 | 显示全部楼层
气筒文件没有这个吧,你看的什么文件?
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-5-25
在线时间
1 小时
 楼主| 发表于 2016-5-25 22:08:35 | 显示全部楼层
;******************************************************************************
;
;                             INTERRUPT VECTORS
;                                    ARM
;                             KEIL's uVision3
;                   (RealView Microprocessor Developer Kit)
;
; Filename      : vectors.s
;******************************************************************************

                PRESERVE8       //8zijie duiqi
                AREA   VECT, CODE, READONLY                     ; Name this block of code                                   ;
                THUMB

                ENTRY

;******************************************************************************
;                                  IMPORTS
;******************************************************************************

                        IMPORT        OS_CPU_SysTickHandler
                        IMPORT        OS_CPU_PendSVHandler

                        IMPORT        BSP_IntHandlerWWDG
                        IMPORT        BSP_IntHandlerPVD
                        IMPORT        BSP_IntHandlerTAMPER
                        IMPORT        BSP_IntHandlerRTC
                        IMPORT        BSP_IntHandlerFLASH
                        IMPORT        BSP_IntHandlerRCC
                        IMPORT        BSP_IntHandlerEXTI0
                        IMPORT        BSP_IntHandlerEXTI1
                        IMPORT        BSP_IntHandlerEXTI2
                        IMPORT        BSP_IntHandlerEXTI3
                        IMPORT        BSP_IntHandlerEXTI4
                        IMPORT        BSP_IntHandlerDMA1_CH1
                        IMPORT        BSP_IntHandlerDMA1_CH2
                        IMPORT        BSP_IntHandlerDMA1_CH3
                        IMPORT        BSP_IntHandlerDMA1_CH4
                        IMPORT        BSP_IntHandlerDMA1_CH5

                        IMPORT        BSP_IntHandlerDMA1_CH6
                        IMPORT        BSP_IntHandlerDMA1_CH7
                        IMPORT        BSP_IntHandlerADC1_2
                        IMPORT        BSP_IntHandlerUSB_HP_CAN_TX
                        IMPORT        BSP_IntHandlerUSB_LP_CAN_RX0
                        IMPORT        BSP_IntHandlerCAN_RX1
                        IMPORT        BSP_IntHandlerCAN_SCE
                        IMPORT        BSP_IntHandlerEXTI9_5
                        IMPORT        BSP_IntHandlerTIM1_BRK
                        IMPORT        BSP_IntHandlerTIM1_UP
                        IMPORT        BSP_IntHandlerTIM1_TRG_COM
                        IMPORT        BSP_IntHandlerTIM1_CC
                        IMPORT        BSP_IntHandlerTIM2
                        IMPORT        BSP_IntHandlerTIM3
                        IMPORT        BSP_IntHandlerTIM4
                        IMPORT        BSP_IntHandlerI2C1_EV

                        IMPORT        BSP_IntHandlerI2C1_ER
                        IMPORT        BSP_IntHandlerI2C2_EV
                        IMPORT        BSP_IntHandlerI2C2_ER
                        IMPORT        BSP_IntHandlerSPI1
                        IMPORT        BSP_IntHandlerSPI2
                        IMPORT        BSP_IntHandlerUSART1
                        IMPORT        BSP_IntHandlerUSART2
                        IMPORT        BSP_IntHandlerUSART3
                        IMPORT        BSP_IntHandlerEXTI15_10
                        IMPORT        BSP_IntHandlerRTCAlarm
                        IMPORT        BSP_IntHandlerUSBWakeUp

                        IMPORT        BSP_IntHandlerUART4
                        IMPORT        BSP_IntHandlerUART5

                IMPORT  BSP_TIM6_IRQHandler
                                       
                IMPORT  ResetHndlr
                IMPORT  ||Image$$ARM_LIB_STACK$$ZI$$Limit||     ; Import stack limit from scatter-loading file              ;

;******************************************************************************
;                                  EXPORTS
;******************************************************************************


;******************************************************************************
;                                DEFINITIONS
;******************************************************************************


;******************************************************************************
;                      INITIALIZE EXCEPTION VECTORS
;******************************************************************************

Vectors
        DCD     ||Image$$ARM_LIB_STACK$$ZI$$Limit||         ;  0, SP start value.                                         
        DCD     ResetHndlr                                  ;  1, PC start value.                                         
        DCD     App_NMI_ISR                                 ;  2, NMI                                                     
        DCD     App_Fault_ISR                               ;  3, Hard Fault                                             
        DCD     App_MemFault_ISR                            ;  4, Memory Management                                      
        DCD     App_BusFault_ISR                            ;  5, Bus Fault                                               
        DCD     App_UsageFault_ISR                          ;  6, Usage Fault                                             
        DCD     0                                           ;  7, Reserved                                                
        DCD     0                                           ;  8, Reserved                                                
        DCD     0                                           ;  9, Reserved                                                
        DCD     0                                           ; 10, Reserved                                                
        DCD     App_Spurious_ISR                            ; 11, SVCall                                                  
        DCD     App_Spurious_ISR                            ; 12, Debug Monitor                                          
        DCD     App_Spurious_ISR                            ; 13, Reserved                                                
        DCD     OS_CPU_PendSVHandler                        ; 14, PendSV Handler                                          
        DCD     OS_CPU_SysTickHandler                       ; 15, uC/OS-II Tick ISR Handler
                                       
        DCD     BSP_IntHandlerWWDG                          ; 16, INTISR[  0]  Window Watchdog.                  
        DCD     BSP_IntHandlerPVD                           ; 17, INTISR[  1]  PVD through EXTI Line Detection.   
        DCD     BSP_IntHandlerTAMPER                        ; 18, INTISR[  2]  Tamper Interrupt.                  
        DCD     BSP_IntHandlerRTC                           ; 19, INTISR[  3]  RTC Global Interrupt.               
        DCD     BSP_IntHandlerFLASH                         ; 20, INTISR[  4]  FLASH Global Interrupt.            
        DCD     BSP_IntHandlerRCC                           ; 21, INTISR[  5]  RCC Global Interrupt.               
        DCD     BSP_IntHandlerEXTI0                         ; 22, INTISR[  6]  EXTI Line0 Interrupt.               
        DCD     BSP_IntHandlerEXTI1                         ; 23, INTISR[  7]  EXTI Line1 Interrupt.               
        DCD     BSP_IntHandlerEXTI2                         ; 24, INTISR[  8]  EXTI Line2 Interrupt.               
        DCD     BSP_IntHandlerEXTI3                         ; 25, INTISR[  9]  EXTI Line3 Interrupt.               
        DCD     BSP_IntHandlerEXTI4                         ; 26, INTISR[ 10]  EXTI Line4 Interrupt.               
        DCD     BSP_IntHandlerDMA1_CH1                      ; 27, INTISR[ 11]  DMA Channel1 Global Interrupt.      
        DCD     BSP_IntHandlerDMA1_CH2                      ; 28, INTISR[ 12]  DMA Channel2 Global Interrupt.      
        DCD     BSP_IntHandlerDMA1_CH3                      ; 29, INTISR[ 13]  DMA Channel3 Global Interrupt.      
        DCD     BSP_IntHandlerDMA1_CH4                      ; 30, INTISR[ 14]  DMA Channel4 Global Interrupt.      
        DCD     BSP_IntHandlerDMA1_CH5                      ; 31, INTISR[ 15]  DMA Channel5 Global Interrupt.      

        DCD     BSP_IntHandlerDMA1_CH6                      ; 32, INTISR[ 16]  DMA Channel6 Global Interrupt.      
        DCD     BSP_IntHandlerDMA1_CH7                      ; 33, INTISR[ 17]  DMA Channel7 Global Interrupt.      
        DCD     BSP_IntHandlerADC1_2                        ; 34, INTISR[ 18]  ADC1 & ADC2 Global Interrupt.      
        DCD     BSP_IntHandlerUSB_HP_CAN_TX                 ; 35, INTISR[ 19]  USB High Prio / CAN TX  Interrupts.
        DCD     BSP_IntHandlerUSB_LP_CAN_RX0                ; 36, INTISR[ 20]  USB Low  Prio / CAN RX0 Interrupts.
        DCD     BSP_IntHandlerCAN_RX1                       ; 37, INTISR[ 21]  CAN RX1 Interrupt.                  
        DCD     BSP_IntHandlerCAN_SCE                       ; 38, INTISR[ 22]  CAN SCE Interrupt.                  
        DCD     BSP_IntHandlerEXTI9_5                       ; 39, INTISR[ 23]  EXTI Line[9:5] Interrupt.           
        DCD     BSP_IntHandlerTIM1_BRK                      ; 40, INTISR[ 24]  TIM1 Break  Interrupt.              
        DCD     BSP_IntHandlerTIM1_UP                       ; 41, INTISR[ 25]  TIM1 Update Interrupt.              
        DCD     BSP_IntHandlerTIM1_TRG_COM                  ; 42, INTISR[ 26]  TIM1 Trig & Commutation Interrupts.
        DCD     BSP_IntHandlerTIM1_CC                       ; 43, INTISR[ 27]  TIM1 Capture Compare Interrupt.     
        DCD     BSP_IntHandlerTIM2                          ; 44, INTISR[ 28]  TIM2 Global Interrupt.              
        DCD     BSP_IntHandlerTIM3                          ; 45, INTISR[ 29]  TIM3 Global Interrupt.              
        DCD     BSP_IntHandlerTIM4                          ; 46, INTISR[ 30]  TIM4 Global Interrupt.              
        DCD     BSP_IntHandlerI2C1_EV                       ; 47, INTISR[ 31]  I2C1 Event  Interrupt.              

        DCD     BSP_IntHandlerI2C1_ER                       ; 48, INTISR[ 32]  I2C1 Error  Interrupt.              
        DCD     BSP_IntHandlerI2C2_EV                       ; 49, INTISR[ 33]  I2C2 Event  Interrupt.              
        DCD     BSP_IntHandlerI2C2_ER                       ; 50, INTISR[ 34]  I2C2 Error  Interrupt.            
        DCD     BSP_IntHandlerSPI1                          ; 51, INTISR[ 35]  SPI1 Global Interrupt.              
        DCD     BSP_IntHandlerSPI2                          ; 52, INTISR[ 36]  SPI2 Global Interrupt.              
        DCD     BSP_IntHandlerUSART1                        ; 53, INTISR[ 37]  USART1 Global Interrupt.            
        DCD     BSP_IntHandlerUSART2                        ; 54, INTISR[ 38]  USART2 Global Interrupt.            
        DCD     BSP_IntHandlerUSART3                        ; 55, INTISR[ 39]  USART3 Global Interrupt.            
        DCD     BSP_IntHandlerEXTI15_10                     ; 56, INTISR[ 40]  EXTI Line [15:10] Interrupts.      
        DCD     BSP_IntHandlerRTCAlarm                      ; 57, INTISR[ 41]  RTC Alarm EXT Line Interrupt.      
        DCD     BSP_IntHandlerUSBWakeUp                     ; 58, INTISR[ 42]  USB Wakeup from Suspend EXTI Int.
        DCD     0 ;BSP_TIM8_BRK_IRQHandler        ; TIM8 Break
        DCD     0 ;BSP_TIM8_UP_IRQHandler         ; TIM8 Update
        DCD     0 ;BSP_TIM8_TRG_COM_IRQHandler    ; TIM8 Trigger and Commutation
        DCD     0 ;BSP_TIM8_CC_IRQHandler         ; TIM8 Capture Compare
        DCD     0 ;BSP_ADC3_IRQHandler            ; ADC3
        DCD     0 ;BSP_FSMC_IRQHandler            ; FSMC
        DCD     0 ;BSP_SDIO_IRQHandler            ; SDIO
        DCD     0 ;BSP_TIM5_IRQHandler            ; TIM5
        DCD     0 ;BSP_SPI3_IRQHandler            ; SPI3
        DCD     BSP_IntHandlerUART4           ; UART4
        DCD     BSP_IntHandlerUART5           ; UART5
        DCD     BSP_TIM6_IRQHandler            ; TIM6
;       DCD     BSP_TIM7_IRQHandler            ; TIM7
;        DCD     BSP_DMA2_Channel1_IRQHandler   ; DMA2 Channel1
;        DCD     BSP_DMA2_Channel2_IRQHandler   ; DMA2 Channel2
;        DCD     BSP_DMA2_Channel3_IRQHandler   ; DMA2 Channel3
;        DCD     BSP_DMA2_Channel4_5_IRQHandler ; DMA2 Channel4 & Channel5
                  
;       DCD     BSP_IntHandlerTim5                          ; 57, INTISR[ 50]  USB Wakeup from Suspend EXTI Int.   
;        DCD     BSP_IntHandlerSPI3                          ; 60, INTISR[ 51]  USB Wakeup from Suspend EXTI Int.   
;        DCD     BSP_IntHandlerUART4                         ; 61, INTISR[ 52]  USB Wakeup from Suspend EXTI Int.   
;        DCD     BSP_IntHandlerUART5                         ; 62, INTISR[ 53]  USB Wakeup from Suspend EXTI Int.   
        
        
;******************************************************************************
;                          DEFAULT HANDLERS
;******************************************************************************

App_NMI_ISR         B       App_NMI_ISR

App_Fault_ISR       B       App_Fault_ISR

App_MemFault_ISR    B       App_MemFault_ISR

App_BusFault_ISR    B       App_BusFault_ISR

App_UsageFault_ISR  B       App_UsageFault_ISR

App_Spurious_ISR    B       App_Spurious_ISR


                ALIGN
                END
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-5-25
在线时间
1 小时
 楼主| 发表于 2016-5-25 22:10:06 | 显示全部楼层
原子大哥,您给看看,我刚买了你出的书(原子教你玩STM32库函数版),嘿嘿
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-5-28 22:19:35 | 显示全部楼层
STM32初学者123 发表于 2016-5-25 22:10
原子大哥,您给看看,我刚买了你出的书(原子教你玩STM32库函数版),嘿嘿

我们没用过这个文件。
vector.s
我们都是用
stm32f10x_startup.s
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2016-5-29 02:53:28 | 显示全部楼层
无用的死循环.
死机 代码.
回复

使用道具 举报

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2285
金钱
2285
注册时间
2013-12-16
在线时间
448 小时
发表于 2016-5-29 08:30:44 | 显示全部楼层
App_NMI_ISR         B       App_NMI_ISR

App_Fault_ISR       B       App_Fault_ISR

App_MemFault_ISR    B       App_MemFault_ISR

App_BusFault_ISR    B       App_BusFault_ISR

App_UsageFault_ISR  B       App_UsageFault_ISR

App_Spurious_ISR    B       App_Spurious_ISR

这些都是陷阱,如果你没有在你的程序中去实现这些函数App_NMI_ISR  , App_Fault_ISR ......等等.那么一旦发生这些中断,就会进入到这里,陷入死循环,每一行代表一个中断源
回复

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2016-5-23
在线时间
5 小时
发表于 2016-5-29 16:42:56 | 显示全部楼层
哇塞  那平常还要用这些函数吗
回复

使用道具 举报

17

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1280
金钱
1280
注册时间
2013-12-14
在线时间
567 小时
发表于 2016-5-29 17:12:48 | 显示全部楼层
本帖最后由 东北小辉辉 于 2016-5-29 17:14 编辑

其实楼主说的那个后面的那些中断或许叫做系统异常更合适些(或者应该叫做Hard Fault?),cortex M3的“中断响应系统”(CM3权威指南中文版上将其称为“异常响应系统”),前面16个被称为系统异常,与什么单片机无关,这个是cortex M3内核规定的,后面才是外设的一些中断。看名字就看出来了,一旦进入这个异常,肯定是用户操作不当导致的(比如可能指针操作错误等等),造成后面的代码失去作用,所以vector.s在这里加入了一个死循环来起一个保护作用?

后来的新版本启动文件stm32f10x_startup.s就没有用汇编代码来做这个工作,但是是在stm32f10x_it.c这个文件中做的,同样是while(1)死循环,不知道为什么会进行这个改动?也许是为了方便用户进行c语言调试?
半导体->模拟电路->数字电路->单片机->汇编->C->操作系统->java
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 06:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表