历史上的今天
返回首页

历史上的今天

今天是:2024年12月12日(星期四)

正在发生

2018年12月12日 | STM32F4启动代码分析

2018-12-12 来源:eefocus

;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************

;* File Name          : startup_stm32f40_41xxx.s

;* Author             : MCD Application Team

;* @version           : V1.4.0

;* @date              : 04-August-2014

;* Description        : STM32F40xxx/41xxx devices vector table for MDK-ARM toolchain. 

;*                      This module performs:

;*                      - Set the initial SP

;*                      - Set the initial PC == Reset_Handler

;*                      - Set the vector table entries with the exceptions ISR address

;*                      - Configure the system clock and the external SRAM mounted on 

;*                        STM324xG-EVAL board to be used as data memory (optional, 

;*                        to be enabled by user)

;*                      - Branches to __main in the C library (which eventually

;*                        calls main()).

;*                      After Reset the CortexM4 processor is in Thread mode,

;*                      priority is Privileged, and the Stack is set to Main.

;* <<< Use Configuration Wizard in Context Menu >>>   

;*******************************************************************************

; Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");

; You may not use this file except in compliance with the License.

; You may obtain a copy of the License at:

;        http://www.st.com/software_license_agreement_liberty_v2

; Unless required by applicable law or agreed to in writing, software 

; distributed under the License is distributed on an "AS IS" BASIS, 

; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

; See the License for the specific language governing permissions and

; limitations under the License.

;*******************************************************************************


; Amount of memory (in bytes) allocated for Stack

; Tailor this value to your application needs

;

;   

;


Stack_Size      EQU     0x00000400   ;开辟栈的大小为0x00000400(1KB)


                AREA    STACK, NOINIT, READWRITE, ALIGN=3 ;一个新的代码段或者数据段。STACK表示段名,这个可以任意命名;

  ;NOINIT表示不初始化;READWRITE表示可读可写,ALIGN=3,表示按照2^3对齐,即8字节对齐。

  

Stack_Mem       SPACE   Stack_Size ;分配一定大小的内存空间,单位为字节。这里指定大小等于Stack_Size

__initial_sp     ;表示栈的结束地址,即栈顶地址,栈是由高向低生长的。



;

;   

;


Heap_Size       EQU     0x00000200 ;;开辟堆的大小为0x00000200(512字节)


                AREA    HEAP, NOINIT, READWRITE, ALIGN=3 ;名字为HEAP,NOINIT即不初始化,可读可写,8(2^3)字节对齐。

__heap_base                                ;__heap_base表示堆的起始地址

Heap_Mem        SPACE   Heap_Size         ; 分配一定大小的内存空间

__heap_limit                               ;__heap_limit表示堆的结束地址。堆是由低向高生长的,跟栈的生长方向相反。


                PRESERVE8              ; 指定当前文件的堆栈按照8字节对齐

                THUMB                  ;后面指令兼容THUMB指令,THUBM是ARM以前的指令集,16bit,

;现在Cortex-M系列的都使用THUMB-2指令集,THUMB-2是32位的,兼容16位和32位的指令,是THUMB的超级。



; Vector Table Mapped to Address 0 at Reset

                AREA    RESET, DATA, READONLY    ;定义一个数据段,名字为RESET,可读。

                EXPORT  __Vectors                ;声明 __Vectors、__Vectors_End和__Vectors_Size这三个标号具有全局属性,可供外部的文件调用

                EXPORT  __Vectors_End

                EXPORT  __Vectors_Size


__Vectors       DCD     __initial_sp               ; Top of Stack   ;向量表起始地址

                DCD     Reset_Handler              ; Reset Handler   ;分配一个或者多个以字为单位的内存,以四字节对齐,并要求初始化这些内存。

                DCD     NMI_Handler                ; NMI Handler

                DCD     HardFault_Handler          ; Hard Fault Handler

                DCD     MemManage_Handler          ; MPU Fault Handler

                DCD     BusFault_Handler           ; Bus Fault Handler

                DCD     UsageFault_Handler         ; Usage Fault Handler

                DCD     0                          ; Reserved             ; 0 表示保留

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     SVC_Handler                ; SVCall Handler

                DCD     DebugMon_Handler           ; Debug Monitor Handler

                DCD     0                          ; Reserved

                DCD     PendSV_Handler             ; PendSV Handler

                DCD     SysTick_Handler            ; SysTick Handler


                ; External Interrupts

                DCD     WWDG_IRQHandler                   ; Window WatchDog                                        

                DCD     PVD_IRQHandler                    ; PVD through EXTI Line detection                        

                DCD     TAMP_STAMP_IRQHandler             ; Tamper and TimeStamps through the EXTI line            

                DCD     RTC_WKUP_IRQHandler               ; RTC Wakeup through the EXTI line                       

                DCD     FLASH_IRQHandler                  ; FLASH                                           

                DCD     RCC_IRQHandler                    ; RCC                                             

                DCD     EXTI0_IRQHandler                  ; EXTI Line0                                             

                DCD     EXTI1_IRQHandler                  ; EXTI Line1                                             

                DCD     EXTI2_IRQHandler                  ; EXTI Line2                                             

                DCD     EXTI3_IRQHandler                  ; EXTI Line3                                             

                DCD     EXTI4_IRQHandler                  ; EXTI Line4                                             

                DCD     DMA1_Stream0_IRQHandler           ; DMA1 Stream 0                                   

                DCD     DMA1_Stream1_IRQHandler           ; DMA1 Stream 1                                   

                DCD     DMA1_Stream2_IRQHandler           ; DMA1 Stream 2                                   

                DCD     DMA1_Stream3_IRQHandler           ; DMA1 Stream 3                                   

                DCD     DMA1_Stream4_IRQHandler           ; DMA1 Stream 4                                   

                DCD     DMA1_Stream5_IRQHandler           ; DMA1 Stream 5                                   

                DCD     DMA1_Stream6_IRQHandler           ; DMA1 Stream 6                                   

                DCD     ADC_IRQHandler                    ; ADC1, ADC2 and ADC3s                            

                DCD     CAN1_TX_IRQHandler                ; CAN1 TX                                                

                DCD     CAN1_RX0_IRQHandler               ; CAN1 RX0                                               

                DCD     CAN1_RX1_IRQHandler               ; CAN1 RX1                                               

                DCD     CAN1_SCE_IRQHandler               ; CAN1 SCE                                               

                DCD     EXTI9_5_IRQHandler                ; External Line[9:5]s                                    

                DCD     TIM1_BRK_TIM9_IRQHandler          ; TIM1 Break and TIM9                   

                DCD     TIM1_UP_TIM10_IRQHandler          ; TIM1 Update and TIM10                 

                DCD     TIM1_TRG_COM_TIM11_IRQHandler     ; TIM1 Trigger and Commutation and TIM11

                DCD     TIM1_CC_IRQHandler                ; TIM1 Capture Compare                                   

                DCD     TIM2_IRQHandler                   ; TIM2                                            

                DCD     TIM3_IRQHandler                   ; TIM3                                            

                DCD     TIM4_IRQHandler                   ; TIM4                                            

                DCD     I2C1_EV_IRQHandler                ; I2C1 Event                                             

                DCD     I2C1_ER_IRQHandler                ; I2C1 Error                                             

                DCD     I2C2_EV_IRQHandler                ; I2C2 Event                                             

                DCD     I2C2_ER_IRQHandler                ; I2C2 Error                                               

                DCD     SPI1_IRQHandler                   ; SPI1                                            

                DCD     SPI2_IRQHandler                   ; SPI2                                            

                DCD     USART1_IRQHandler                 ; USART1                                          

                DCD     USART2_IRQHandler                 ; USART2                                          

                DCD     USART3_IRQHandler                 ; USART3                                          

                DCD     EXTI15_10_IRQHandler              ; External Line[15:10]s                                  

                DCD     RTC_Alarm_IRQHandler              ; RTC Alarm (A and B) through EXTI Line                  

                DCD     OTG_FS_WKUP_IRQHandler            ; USB OTG FS Wakeup through EXTI line                        

                DCD     TIM8_BRK_TIM12_IRQHandler         ; TIM8 Break and TIM12                  

                DCD     TIM8_UP_TIM13_IRQHandler          ; TIM8 Update and TIM13                 

                DCD     TIM8_TRG_COM_TIM14_IRQHandler     ; TIM8 Trigger and Commutation and TIM14

                DCD     TIM8_CC_IRQHandler                ; TIM8 Capture Compare                                   

                DCD     DMA1_Stream7_IRQHandler           ; DMA1 Stream7                                           

                DCD     FSMC_IRQHandler                   ; FSMC                                            

                DCD     SDIO_IRQHandler                   ; SDIO                                            

                DCD     TIM5_IRQHandler                   ; TIM5                                            

                DCD     SPI3_IRQHandler                   ; SPI3                                            

                DCD     UART4_IRQHandler                  ; UART4                                           

                DCD     UART5_IRQHandler                  ; UART5                                           

                DCD     TIM6_DAC_IRQHandler               ; TIM6 and DAC1&2 underrun errors                   

                DCD     TIM7_IRQHandler                   ; TIM7                   

                DCD     DMA2_Stream0_IRQHandler           ; DMA2 Stream 0                                   

                DCD     DMA2_Stream1_IRQHandler           ; DMA2 Stream 1                                   

                DCD     DMA2_Stream2_IRQHandler           ; DMA2 Stream 2                                   

                DCD     DMA2_Stream3_IRQHandler           ; DMA2 Stream 3                                   

                DCD     DMA2_Stream4_IRQHandler           ; DMA2 Stream 4                                   

                DCD     ETH_IRQHandler                    ; Ethernet                                        

                DCD     ETH_WKUP_IRQHandler               ; Ethernet Wakeup through EXTI line                      

                DCD     CAN2_TX_IRQHandler                ; CAN2 TX                                                

                DCD     CAN2_RX0_IRQHandler               ; CAN2 RX0                                               

                DCD     CAN2_RX1_IRQHandler               ; CAN2 RX1                                               

                DCD     CAN2_SCE_IRQHandler               ; CAN2 SCE                                               

                DCD     OTG_FS_IRQHandler                 ; USB OTG FS                                      

                DCD     DMA2_Stream5_IRQHandler           ; DMA2 Stream 5                                   

                DCD     DMA2_Stream6_IRQHandler           ; DMA2 Stream 6                                   

                DCD     DMA2_Stream7_IRQHandler           ; DMA2 Stream 7                                   

                DCD     USART6_IRQHandler                 ; USART6                                           

                DCD     I2C3_EV_IRQHandler                ; I2C3 event                                             

                DCD     I2C3_ER_IRQHandler                ; I2C3 error                                             

                DCD     OTG_HS_EP1_OUT_IRQHandler         ; USB OTG HS End Point 1 Out                      

                DCD     OTG_HS_EP1_IN_IRQHandler          ; USB OTG HS End Point 1 In                       

                DCD     OTG_HS_WKUP_IRQHandler            ; USB OTG HS Wakeup through EXTI                         

                DCD     OTG_HS_IRQHandler                 ; USB OTG HS                                      

                DCD     DCMI_IRQHandler                   ; DCMI                                            

                DCD     CRYP_IRQHandler                   ; CRYP crypto                                     

                DCD     HASH_RNG_IRQHandler               ; Hash and Rng

                DCD     FPU_IRQHandler                    ; FPU

                                         

__Vectors_End                                             ;向量表结束地址


__Vectors_Size  EQU  __Vectors_End - __Vectors            ;两个相减即可算出向量表大小。


                AREA    |.text|, CODE, READONLY          ;定义一个名称为.text的代码段,可读。


; Reset handler

Reset_Handler    PROC                                ;复位子程序是系统上电后第一个执行的程序,调用System

;后调用C库函数_mian,最终调用main函数去到C的世界。

;PROC 是子程序定义伪指令

                 EXPORT  Reset_Handler             [WEAK]   ;WEAK:表示弱定义,如果外部文件优先定义了该标号则首先引用该标号,如果外部

;文件没有声明也不会出错。这里表示复位子程序可以由用户在其他文件重新实现,这里并

;不是唯一的。

  

        IMPORT  SystemInit                                 ;IMPORT:表示该标号来自外部文件,跟C语言中的EXTERN关键字类似。

        IMPORT  __main


                 LDR     R0, =SystemInit                 ;把 SystemInit 的地址加载到寄存器 R0

                 BLX     R0                              ;程序跳转到 R0 中的地址执行程序,即执行SystemInit函数的内容

                 LDR     R0, =__main                     ;把__main 的地址加载到寄存器 R0。

                 BX      R0 ;程序跳转到 R0 中的地址执行程序,即执行__main函数,进入main函数

                 ENDP ;子程序的结束


; Dummy Exception Handlers (infinite loops which can be modified)

;在启动文件里面已经帮我们写好所有中断的中断服务函数,跟我们平时写的中断服务

;函数不一样的就是这些函数都是空的,真正的中断复服务程序需要我们在外部的C文件里

;面重新实现,这里只是提前占了一个位置而已。 

;如果我们在使用某个外设的时候,开启了某个中断,但是又忘记编写配套的中断服务

;程序或者函数名写错,那当中断来临的时,程序就会跳转到启动文件预先写好的空的中断

;服务程序中,并且在这个空函数中无线循环,即程序就死在这里。

NMI_Handler     PROC  ;系统异常

                EXPORT  NMI_Handler                [WEAK]

                B       .           ;B:跳转到一个标号。这里跳转到一个‘.’,即表示无线循环。

                ENDP

HardFault_Handler\

                PROC

                EXPORT  HardFault_Handler          [WEAK]

                B       .

                ENDP

MemManage_Handler\

                PROC

                EXPORT  MemManage_Handler          [WEAK]

                B       .

                ENDP

BusFault_Handler\

                PROC

                EXPORT  BusFault_Handler           [WEAK]

                B       .

                ENDP

UsageFault_Handler\

                PROC

                EXPORT  UsageFault_Handler         [WEAK]

                B       .

                ENDP

SVC_Handler     PROC

                EXPORT  SVC_Handler                [WEAK]

                B       .

                ENDP

DebugMon_Handler\

                PROC

                EXPORT  DebugMon_Handler           [WEAK]

                B       .

                ENDP

PendSV_Handler  PROC

                EXPORT  PendSV_Handler             [WEAK]

                B       .

                ENDP

SysTick_Handler PROC

                EXPORT  SysTick_Handler            [WEAK]

                B       .

                ENDP


Default_Handler PROC  ;外部中断 


                EXPORT  WWDG_IRQHandler                   [WEAK]                                        

                EXPORT  PVD_IRQHandler                    [WEAK]                      

                EXPORT  TAMP_STAMP_IRQHandler             [WEAK]         

                EXPORT  RTC_WKUP_IRQHandler               [WEAK]                     

                EXPORT  FLASH_IRQHandler                  [WEAK]                                         

                EXPORT  RCC_IRQHandler                    [WEAK]                                            

                EXPORT  EXTI0_IRQHandler                  [WEAK]                                            

                EXPORT  EXTI1_IRQHandler                  [WEAK]                                             

                EXPORT  EXTI2_IRQHandler                  [WEAK]                                            

                EXPORT  EXTI3_IRQHandler                  [WEAK]                                           

                EXPORT  EXTI4_IRQHandler                  [WEAK]                                            

                EXPORT  DMA1_Stream0_IRQHandler           [WEAK]                                

                EXPORT  DMA1_Stream1_IRQHandler           [WEAK]                                   

                EXPORT  DMA1_Stream2_IRQHandler           [WEAK]                                   

                EXPORT  DMA1_Stream3_IRQHandler           [WEAK]                                   

                EXPORT  DMA1_Stream4_IRQHandler           [WEAK]                                   

                EXPORT  DMA1_Stream5_IRQHandler           [WEAK]                                   

                EXPORT  DMA1_Stream6_IRQHandler           [WEAK]                                   

                EXPORT  ADC_IRQHandler                    [WEAK]                         

                EXPORT  CAN1_TX_IRQHandler                [WEAK]                                                

                EXPORT  CAN1_RX0_IRQHandler               [WEAK]                                               

                EXPORT  CAN1_RX1_IRQHandler               [WEAK]                                                

                EXPORT  CAN1_SCE_IRQHandler               [WEAK]                                                

                EXPORT  EXTI9_5_IRQHandler                [WEAK]                                    

                EXPORT  TIM1_BRK_TIM9_IRQHandler          [WEAK]                  

                EXPORT  TIM1_UP_TIM10_IRQHandler          [WEAK]                

                EXPORT  TIM1_TRG_COM_TIM11_IRQHandler     [WEAK] 

                EXPORT  TIM1_CC_IRQHandler                [WEAK]                                   

                EXPORT  TIM2_IRQHandler                   [WEAK]                                            

                EXPORT  TIM3_IRQHandler                   [WEAK]                                            

                EXPORT  TIM4_IRQHandler                   [WEAK]                                            

                EXPORT  I2C1_EV_IRQHandler                [WEAK]                                             

                EXPORT  I2C1_ER_IRQHandler                [WEAK]                                             

                EXPORT  I2C2_EV_IRQHandler                [WEAK]                                            

                EXPORT  I2C2_ER_IRQHandler                [WEAK]                                               

                EXPORT  SPI1_IRQHandler                   [WEAK]                                           

                EXPORT  SPI2_IRQHandler                   [WEAK]                                            

                EXPORT  USART1_IRQHandler                 [WEAK]                                          

                EXPORT  USART2_IRQHandler                 [WEAK]                                          

                EXPORT  USART3_IRQHandler                 [WEAK]                                         

                EXPORT  EXTI15_10_IRQHandler              [WEAK]                                  

                EXPORT  RTC_Alarm_IRQHandler              [WEAK]                  

                EXPORT  OTG_FS_WKUP_IRQHandler            [WEAK]                        

                EXPORT  TIM8_BRK_TIM12_IRQHandler         [WEAK]                 

                EXPORT  TIM8_UP_TIM13_IRQHandler          [WEAK]                 

                EXPORT  TIM8_TRG_COM_TIM14_IRQHandler     [WEAK] 

                EXPORT  TIM8_CC_IRQHandler                [WEAK]                                   

                EXPORT  DMA1_Stream7_IRQHandler           [WEAK]                                          

                EXPORT  FSMC_IRQHandler                   [WEAK]                                             

                EXPORT  SDIO_IRQHandler                   [WEAK]                                             

                EXPORT  TIM5_IRQHandler                   [WEAK]                                             

                EXPORT  SPI3_IRQHandler                   [WEAK]                                             

                EXPORT  UART4_IRQHandler                  [WEAK]                                            

                EXPORT  UART5_IRQHandler                  [WEAK]                                            

                EXPORT  TIM6_DAC_IRQHandler               [WEAK]                   

                EXPORT  TIM7_IRQHandler                   [WEAK]                    

                EXPORT  DMA2_Stream0_IRQHandler           [WEAK]                                  

                EXPORT  DMA2_Stream1_IRQHandler           [WEAK]                                   

                EXPORT  DMA2_Stream2_IRQHandler           [WEAK]                                    

                EXPORT  DMA2_Stream3_IRQHandler           [WEAK]                                    

                EXPORT  DMA2_Stream4_IRQHandler           [WEAK]                                 

                EXPORT  ETH_IRQHandler                    [WEAK]                                         

                EXPORT  ETH_WKUP_IRQHandler               [WEAK]                     

                EXPORT  CAN2_TX_IRQHandler                [WEAK]                                               

                EXPORT  CAN2_RX0_IRQHandler               [WEAK]                                               

                EXPORT  CAN2_RX1_IRQHandler               [WEAK]                                               

                EXPORT  CAN2_SCE_IRQHandler               [WEAK]                                               

                EXPORT  OTG_FS_IRQHandler                 [WEAK]                                       

                EXPORT  DMA2_Stream5_IRQHandler           [WEAK]                                   

                EXPORT  DMA2_Stream6_IRQHandler           [WEAK]                                   

                EXPORT  DMA2_Stream7_IRQHandler           [WEAK]                                   

                EXPORT  USART6_IRQHandler                 [WEAK]                                           

                EXPORT  I2C3_EV_IRQHandler                [WEAK]                                              

                EXPORT  I2C3_ER_IRQHandler                [WEAK]                                              

                EXPORT  OTG_HS_EP1_OUT_IRQHandler         [WEAK]                      

                EXPORT  OTG_HS_EP1_IN_IRQHandler          [WEAK]                      

                EXPORT  OTG_HS_WKUP_IRQHandler            [WEAK]                        

                EXPORT  OTG_HS_IRQHandler                 [WEAK]                                      

                EXPORT  DCMI_IRQHandler                   [WEAK]                                             

                EXPORT  CRYP_IRQHandler                   [WEAK]                                     

                EXPORT  HASH_RNG_IRQHandler               [WEAK]

                EXPORT  FPU_IRQHandler                    [WEAK]


WWDG_IRQHandler                                                       

PVD_IRQHandler                                      

TAMP_STAMP_IRQHandler                  

RTC_WKUP_IRQHandler                                

FLASH_IRQHandler                                                       

RCC_IRQHandler                                                            

EXTI0_IRQHandler                                                          

EXTI1_IRQHandler                                                           

EXTI2_IRQHandler                                                          

EXTI3_IRQHandler                                                         

EXTI4_IRQHandler                                                          

DMA1_Stream0_IRQHandler                                       

DMA1_Stream1_IRQHandler                                          

DMA1_Stream2_IRQHandler                                          

DMA1_Stream3_IRQHandler                                          

DMA1_Stream4_IRQHandler                                          

DMA1_Stream5_IRQHandler                                          

DMA1_Stream6_IRQHandler                                          

ADC_IRQHandler                                         

CAN1_TX_IRQHandler                                                            

CAN1_RX0_IRQHandler                                                          

CAN1_RX1_IRQHandler                                                           

CAN1_SCE_IRQHandler                                                           

EXTI9_5_IRQHandler                                                

TIM1_BRK_TIM9_IRQHandler                        

TIM1_UP_TIM10_IRQHandler                      

TIM1_TRG_COM_TIM11_IRQHandler  

TIM1_CC_IRQHandler                                               

TIM2_IRQHandler                                                           

TIM3_IRQHandler                                                           

TIM4_IRQHandler                                                           

I2C1_EV_IRQHandler                                                         

I2C1_ER_IRQHandler                                                         

I2C2_EV_IRQHandler                                                        

I2C2_ER_IRQHandler                                                           

SPI1_IRQHandler                                                          

SPI2_IRQHandler                                                           

USART1_IRQHandler                                                       

USART2_IRQHandler                                                       

USART3_IRQHandler                                                      

EXTI15_10_IRQHandler                                            

RTC_Alarm_IRQHandler                            

OTG_FS_WKUP_IRQHandler                                

TIM8_BRK_TIM12_IRQHandler                      

TIM8_UP_TIM13_IRQHandler                       

TIM8_TRG_COM_TIM14_IRQHandler  

TIM8_CC_IRQHandler                                               

DMA1_Stream7_IRQHandler                                                 

FSMC_IRQHandler                                                            

SDIO_IRQHandler                                                            

TIM5_IRQHandler                                                            

SPI3_IRQHandler                                                            

UART4_IRQHandler                                                          

UART5_IRQHandler                                                          

TIM6_DAC_IRQHandler                            

TIM7_IRQHandler                              

DMA2_Stream0_IRQHandler                                         

DMA2_Stream1_IRQHandler                                          

DMA2_Stream2_IRQHandler                                           

DMA2_Stream3_IRQHandler                                           

DMA2_Stream4_IRQHandler                                        

ETH_IRQHandler                                                         

ETH_WKUP_IRQHandler                                

CAN2_TX_IRQHandler                                                           

CAN2_RX0_IRQHandler                                                          

CAN2_RX1_IRQHandler                                                          

CAN2_SCE_IRQHandler                                                          

OTG_FS_IRQHandler                                                    

DMA2_Stream5_IRQHandler                                          

DMA2_Stream6_IRQHandler                                          

DMA2_Stream7_IRQHandler                                          

USART6_IRQHandler                                                        

I2C3_EV_IRQHandler                                                          

I2C3_ER_IRQHandler                                                          

OTG_HS_EP1_OUT_IRQHandler                           

OTG_HS_EP1_IN_IRQHandler                            

OTG_HS_WKUP_IRQHandler                                

OTG_HS_IRQHandler                                                   

DCMI_IRQHandler                                                            

CRYP_IRQHandler                                                    

HASH_RNG_IRQHandler

FPU_IRQHandler

   

                B       .


                ENDP


                ALIGN     ;ALIGN:对指令或者数据存放的地址进行对齐,后面会跟一个立即数。缺省表示4字节对齐。 



;*******************************************************************************

; User Stack and Heap initialization  ;用户栈和堆初始化

;*******************************************************************************

;判断是否定义了__MICROLIB ,如果定义了则赋予标号__initial_sp(栈顶地址)、

;__heap_base(堆起始地址)、__heap_limit(堆结束地址)全局属性,可供外部文件调用。

;如果没有定义(实际的情况就是我们没定义__MICROLIB)则使用默认的C库,然后初始

;化用户堆栈大小,这部分有C库函数__main来完成,当初始化完堆栈之后,就调用main

;函数去到C的世界。

                 IF      :DEF:__MICROLIB

                

                 EXPORT  __initial_sp

                 EXPORT  __heap_base

                 EXPORT  __heap_limit

                

                 ELSE

                

                 IMPORT  __use_two_region_memory

                 EXPORT  __user_initial_stackheap

                 

__user_initial_stackheap


                 LDR     R0, =  Heap_Mem

                 LDR     R1, =(Stack_Mem + Stack_Size)

                 LDR     R2, = (Heap_Mem +  Heap_Size)

                 LDR     R3, = Stack_Mem

                 BX      LR


                 ALIGN


                 ENDIF


                 END


;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****


推荐阅读

史海拾趣

Astec [Astec America, Inc]公司的发展小趣事

随着全球环保意识的不断提高,Astec也开始关注绿色环保和可持续发展问题。公司积极采用环保材料和节能技术,推出了一系列绿色电源产品。同时,Astec还加大了对环保技术的研发力度,努力在保持产品性能的同时,降低生产过程中的能耗和排放。这些举措不仅有助于公司应对环保法规的挑战,还提升了公司的社会形象。

科达嘉CODACA公司的发展小趣事

随着电子行业的快速发展,科达嘉意识到技术革新是企业持续发展的关键。因此,公司不断增加自动化生产设备,购置先进的质量测试仪器,并筹建了电感元器件分析实验室和标准的AEC-Q200可靠性实验室。这些举措大大增强了公司的研发分析能力,提升了产品质量和生产效率。科达嘉逐渐形成了以材料研发、产品研发、生产、质量及物控为基础的完整产业链。

明微公司的发展小趣事

随着全球半导体行业向中国市场的转移,明微公司意识到拓展海外市场的重要性。为了加快海外市场拓展步伐,公司积极加强与国际知名企业的合作与交流,引进先进的技术和管理经验。同时,公司还积极参加国际展会和论坛等活动,提升品牌影响力。这些举措使明微公司在国际市场上逐渐树立起良好的口碑和形象。

FCI / Amphenol公司的发展小趣事

Amphenol公司成立于1932年,最初由Arthur J. Schmitt和Gordon K. Klapmeier共同创办,专注于电磁线缆的制造。然而,随着技术的进步和市场需求的变化,Amphenol公司逐渐将重心转向电缆连接器的制造。凭借高品质的产品和服务,Amphenol公司的电缆连接器在市场上获得了广泛的认可,并逐渐发展成为全球最大的电缆连接器制造商之一。

Analytic Instruments Corp公司的发展小趣事

为了确保产品质量的稳定性和可靠性,Analytic Instruments Corp不断完善质量管理体系。公司引进了先进的生产设备和检测仪器,建立了严格的质量控制流程。同时,公司还加强了员工的培训和管理,提高了员工的质量意识和操作技能。这些举措使得公司的产品质量得到了客户的高度认可,进一步巩固了市场地位。

EDAC公司的发展小趣事

ECS-B公司是一家以生产高端电子产品为主的企业。在竞争激烈的电子行业中,ECS-B公司深知品质是企业生存和发展的关键。因此,公司非常重视品质管理,从原材料采购、生产过程到成品检验,都实行严格的质量控制。ECS-B公司还建立了完善的品质管理体系,通过持续改进和优化生产流程,提升产品的品质水平。正是凭借卓越的品质和可靠的性能,ECS-B公司的产品在市场上赢得了良好的口碑和广泛的认可。

问答坊 | AI 解惑

急救啊!!一个反射式红外传感器的问题!!

我在做一个防盗电路,那个反射式红外传感器不能过滤可见光!!!应如何解决啊!!是不是换一个可过滤可见光的反射式红外传感器就可以啦???应该用什么型号的啊!!麻烦教教小弟!!我上传了电路图…

查看全部问答>

诚聘嵌入式开发人员

因业务需要,本公司急聘嵌入式开发人员,职位要求如下,工作地点杭州,欢迎加入,待遇从优。如果你想让自己更能找到发挥的潜力,展现自己的能力,请联系job@shtacom.com。 Firmware Engineer    Work Location: HangZhou Ope ...…

查看全部问答>

如何保证LED芯片固晶质量

replyreload += \',\' + 373442;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

RS485通讯再次发帖

    我现在用MAX485做半双工发送。碰到一个问题:波特率选择115200,下位机MCU通过中断接收。上位机(COMMASTER)向下位机MAX485发数据,然后MCU进行处理。当上位机如果每次只发送一位数据的时候,通讯正常;如果上位机发送一串字符串的 ...…

查看全部问答>

求助,ldrls pc, [pc, r3, lsl #2]的意思

今天打开汇编看了下有句 ldrls        pc, [pc, r3, lsl #2] 不知道哪位大哥给解释一下这句汇编的意思!! 谢谢…

查看全部问答>

eboot.nb0生成不了的问题???

只生成了eboot.bin,查看build.log,错误如下: BUILD: [01:0000000144:INFO  ] Writing E:\\WINCE600\\platform\\SMDK6410\\target\\ARMV4I\\retail\\EBOOT.bin BUILD: [01:0000000145:INFO  ] Table of contents &nbs ...…

查看全部问答>

谁有TFT的VHDL例程参考下啊?

如题 谢谢了,从网上找 了一些都不太适合 我的TFT引脚如下: RS,WR,RD,CS,RESET,DB0-DB7 从网上找到一些很复杂的,谁有比较简单的共享下啊…

查看全部问答>

程序库之旅 4: 独立于MCU的LED闪烁库

   我们知道,这样一个程序,需要两个部分。1. LED的亮灭控制;2. 延时函数;   如果只是像那些入门教程那样直接写在main函数里,这是非常简单的。           现在让我们考虑,如何实现 独立于 ...…

查看全部问答>

基于430的心率计资料共享

基于430的心率计资料共享…

查看全部问答>

求关于MSP430F149的例程帮助

我需要3个例程,关于MSP430F149的红外发射与接收,红外解码以及74HC165并转串的开发板例程。有的朋友帮我一下,谢谢啦。…

查看全部问答>