启动文件源码如下:
; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; ; ;
;栈初始化
Stack_Size EQU 0x00000400 ;EQU定义栈空间的大小 1024字节,栈空间由编译器自动分配变量所占内存,该汇编语句等效于#define Stack_Size 0x00000400
AREA STACK, NOINIT, READWRITE, ALIGN=3 ;定义一个名为STACK的内存单元,它是可读写的,对齐方式为2^3=8字节对齐
Stack_Mem SPACE Stack_Size ;SPACE分配连续的栈存储空间,大小为0x00000400(1K),把首地址赋给Stack_Mem
__initial_sp ;初始化堆栈指针,指向堆栈顶。
; ; ;
;堆初始化
Heap_Size EQU 0x00000200 ;EQU定义堆空间的大小,堆空间由人为手动分配变量所占内存,该汇编语句等效于#define Heap_Size 0x00000200
AREA HEAP, NOINIT, READWRITE, ALIGN=3 ;定义一个名为HEAP的内存单元,它是可读写的,对齐方式为2^3=8字节对齐
__heap_base ;堆起始地址
Heap_Mem SPACE Heap_Size ;SPACE分配连续的堆存储空间,大小为0x00000200(512Bytes),把首地址赋给Heap_Mem
__heap_limit ;堆终止地址,与__heap_base配合限制堆的大小
PRESERVE8 ;告诉编译器以8字节对齐,命令指定当前文件保持栈的八字节对齐
THUMB ;告诉编译器使用THUMB指令集,THUMB 必须位于使用新语法的任何Thumb代码之前;定义复位段(中断向量表),并初始化
;中断向量表定义
; Vector Table Mapped to Address 0 at Reset ;中断向量表默认从地址0开始,如果使用了向量表重定位,则从重定位地址开始。假设STM32从FLASH启动,则此中断向量表起始地址即为0x8000000。
AREA RESET, DATA, READONLY ;定义一个名为RESET的数据段,它是只读类型的。
EXPORT __Vectors ;声明全局变量_Vectors,该标号可在其他文件中使用,表示中断向量表入口地址
EXPORT __Vectors_End ;向量表终止地址
EXPORT __Vectors_Size ;向量表空间大小
__Vectors DCD __initial_sp ; Top of Stack Top of Stack 第一个表项是栈顶地址;该处物理地址值即为 __Vetors 标号所表示的值;该地址中存储__initial_sp所表示的地址值,
;大小为一个字(32bit)
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 总线错误中断,一般发生在数据访问异常,比如fsmc访问不当
DCD UsageFault_Handler ; Usage Fault Handler 用法错误中断,一般是预取值,或者位置指令,数据处理等错误
DCD 0 ; Reserved
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 挂起异常,此处可以用作RTOS的上下文切换异常,这是被推荐使用的,因为Cortex-M4会在异常发生时自动保存R0-R3,R12,R13(堆栈指针SP),R14(链接地址,也叫返回地址LR,在异常返回时使用),R15(程序计数器PC,为当前应用程序+4)和中断完成时自动恢复,我们只需保存R4-R11,大大减少了中断响应和上下文切换的时间。
DCD SysTick_Handler ; SysTick Handler 滴答定时器,为操作系统内核时钟
; External Interrupts 外部中断
DCD WWDG_IRQHandler ; Window Watchdog
DCD PVD_IRQHandler ; PVD through EXTI Line detect
DCD TAMPER_IRQHandler ; Tamper
DCD RTC_IRQHandler ; RTC
DCD FLASH_IRQHandler ; Flash
DCD RCC_IRQHandler ; RCC
DCD EXTI0_IRQHandler ; EXTI Line 0
DCD EXTI1_IRQHandler ; EXTI Line 1
DCD EXTI2_IRQHandler ; EXTI Line 2
DCD EXTI3_IRQHandler ; EXTI Line 3
DCD EXTI4_IRQHandler ; EXTI Line 4
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
DCD ADC1_2_IRQHandler ; ADC1 & ADC2
DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX
DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0
DCD CAN1_RX1_IRQHandler ; CAN1 RX1
DCD CAN1_SCE_IRQHandler ; CAN1 SCE
DCD EXTI9_5_IRQHandler ; EXTI Line 9..5
DCD TIM1_BRK_IRQHandler ; TIM1 Break
DCD TIM1_UP_IRQHandler ; TIM1 Update
DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
DCD TIM2_IRQHandler ; TIM2
DCD TIM3_IRQHandler ; TIM3
DCD TIM4_IRQHandler ; TIM4
上一篇:STM32系列单片机在进入main函数前都在干些什么?
下一篇:关于STM32系列单片机中断触发时间问题
推荐阅读最新更新时间:2024-11-16 20:07
推荐帖子
- 保护电力电容应该注意哪些因素
- 无功补偿的电力电容器的正常寿命应该是几年?保护电力电容应该注意哪些因素(温度什么的)\0\0\0eeworldpostqq保护电力电容应该注意哪些因素通常使用条件下,寿命20年是需要的,
- 抛砖引玉 电源技术
- 一个逻辑工程师的成长之路-理论篇
- 面试了很多人,有些水平高,有些水平低,有一些公司有严格的职级,比如华为,完全可以根据其职级来得知其逻辑水平,而且华为的业务职级和技术职级还是分开的。我们公司也有职级,但是,不同的公司之间,或者说,逻辑工程师,没有一个比较普遍、统一的标准来衡量其水平。我一直比较困惑于这个问题,原因来自于从小受到的教育和长大后经常看的小说。小时候的学习成绩,是非常容易识别和量化的,分高分低,一比就知。成年以后,看过各种小说,武力高低,也是有非常明确的量化的,一个人完全可以非常清楚的知道,自己的级别。比如《绝世唐
- yifeilw FPGA/CPLD
- 看了以前很多关于bootloader的帖子, 还是解决不了的疑问
- 看了这个版面以前很多关于bootloader的帖子,还是解决不了心中的疑问,特来打扰一下大家.是关于wince下bootloader的问题(不考虑linux)现在市场上的开发板,很多都是用ADS独立编译一个bootloader,用这个bootloader加载系统(nk.bin或nk.nb0),这个bootloader第一次一般用jtag工具烧写,以后就可以用usb或串口来更新,这个bootloader是不是应该叫nboot+eboot呢bootloader的生命周期在操
- henbane 嵌入式系统
- 国庆散分!
- 想散个分,等级太低了只能搞一百--版主不要把我的贴搞到扩充板块的去了国庆好开心国庆散分!接分60大庆,接分好多散分帖啊~~~~~分,接大清早,凑个热闹接分。。。大清早,凑个热闹10.1早上10.00,国庆大阅兵!顶起!我来接分!!!国庆快乐呵呵!
- Anna2007 嵌入式系统
- 分享:功率分析仪直连CAN网络
- 介绍一款可以把功率分析仪接入到CAN总线网络里的神器,WT-CAN通信适配器:iDAQ-WTCAN。就是下图这个小盒子。有了它,就可以直接将横河的WT5000或WT1800E系列功率分析仪接入到您的CAN系统中,轻松获取需要的功率参数。 为什么需要CAN通信适配器? CAN总线因其优异的稳定性和可扩展性,不但在汽车电子领域应用非常广泛,在风电、光伏等领域也有一定的应用。所以很多相关的集成测试系统也都采用CAN总线作为数据采集传输的通信方式,这样的好处是可以直接获取CAN总线上的数
- 灞波儿奔 RF/无线
- 【2024 DigiKey创意大赛】基于STM32MP157的智能垃圾桶
- 基于STM32MP157的智能垃圾桶一、作品简介作品照片;作品功能介绍;物料清单及简介,如使用的板卡、芯片、模块等;100-200字多功能智能垃圾桶,主要用了k210开发板来做识别和控制以及用stm32mp157来做传感器数据采集以及图像传输。主要功能如下垃圾分类识别+舵机控制语音控制垃圾桶开关检测垃圾桶的满溢程度摄像头读取图像信息并通过UDP传输至客户端使用视觉识别
- zfw152666 DigiKey得捷技术专区
设计资源 培训 开发板 精华推荐
- LT1618、DC/DC 转换器从各种电源驱动 Lumileds 白光 LED
- LT3653,电路显示从 USB 输入或高压输入为单节锂离子电池充电
- LTC1345 单电源 V.35 收发器的典型应用
- 使用 Richtek Technology Corporation 的 RT8062 的参考设计
- EVAL-ADUM3220AEBZ,iCoupler ADuM3220EBZ 评估板,4A 输出隔离栅极驱动器
- AM2F-1203SH52Z 3.3V 2瓦直流/直流转换器的典型应用
- 使用 ADM3061EARZ 3 至 5.5 V、±12 kV IEC ESD 保护、50 Mbps RS-485 收发器的典型应用
- 使用 ON Semiconductor 的 STK415-090-E 的参考设计
- AM30EW-480315TZ 3.3V单路输出DC/DC转换器典型应用
- LT8705AIUHF 12V、15A 输出转换器的典型应用接受 7.5V 至 55V 输入