stm32的启动文件startup_stm32f10x_hd.s主要包含以下6个部分:
分配栈,包括大小和栈顶地址(不初始化);
分配堆,包括大小和堆起始地址(不初始化);
初始化中断向量表,将栈顶地址初始化为FLASH的0地址,复位程序为0X04地址,并将程序计数器指针PC指向复位程序0X04;
复位程序;
中断服务程序;
初始化1和2分配的堆栈;
以下是启动文件:
;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
;* File Name : startup_stm32f10x_hd.s
;* Author : MCD Application Team
;* Version : V3.5.0
;* Date : 11-March-2011
;* Description : STM32F10x High Density Devices vector table for MDK-ARM
;* toolchain.
;* This module performs:
;* - Set the initial SP
;* - 初始化堆栈指针SP
;* - Set the initial PC == Reset_Handler
;* - 初始化PC指针 == Reset_Handler复位程序,上电复位后的第一个程序
;* - Set the vector table entries with the exceptions ISR address
;* - 以规定的ISR(中断服务请求)地址来设置中断向量表
;* - Configure the clock system and also configure the external
;* SRAM mounted on STM3210E-EVAL board to be used as data
;* memory (optional, to be enabled by user)
;* - 配置系统时钟,配置挂载到stm32板上的外部SRAM(可选项)
;* - Branches to __main in the C library (which eventually
;* calls main()).
;* - 调用Ck库函数 __main,去到C的世界
;* After Reset the CortexM3 processor is in Thread mode,
;* priority is Privileged, and the Stack is set to Main.
;* <<< Use Configuration Wizard in Context Menu >>>
;*******************************************************************************
; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
;*******************************************************************************
; 1-栈
; Amount of memory (in bytes) allocated for Stack
; 为堆栈分配内存,以字节为单位
; Tailor this value to your application needs
; 可以根据需要修改栈的大小
; ; 配置栈(栈就是一块内存):变量(局部/全局),函数调用 ; ;
Stack_Size EQU 0x00000400
; 定义栈大小 1024字节(1KB)
AREA STACK, NOINIT, READWRITE, ALIGN=3
; 告诉编译器汇编一个数据段,段名为STACK,不初始化,可读可写,8字节对齐
Stack_Mem SPACE Stack_Size
; 分配内存空间,单位字节,大小为Stack_Size
__initial_sp
; 栈顶地址
; 2-堆
; ; 配置堆,主要用于动态内存分配,malloc() ; ;
Heap_Size EQU 0x00000200
; 512字节
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
; 堆起始地址
PRESERVE8 ; 当前堆栈以8字节对齐
THUMB ; 兼容THUMB指令集,THUMB是16位指令集,现在使用的THUMB-2是32位指令
; 3-中断向量表
; Vector Table Mapped to Address 0 at Reset
; 初始化中断向量表,向量表在复位时映射到地址0
AREA RESET, DATA, READONLY
; 汇编一个数据段,属性只读
EXPORT __Vectors
; 向量表起始地址
EXPORT __Vectors_End
; 向量表结束地址
EXPORT __Vectors_Size
__Vectors DCD __initial_sp ; Top of Stack
; 把栈顶地址初始化成向量表的起始地址,解释如下:
; 向量表从FLASH的0地址开始放置,以4个字节为一个单位,地址0存放的是栈
; 顶地址,0X04存放的是复位程序的地址,以此类推。从代码上看,向量表中存放
; 的都是中断服务函数的函数名,可我们知道C语言中的函数名就是一个地址。
DCD Reset_Handler ; Reset Handler
; 初始化复位程序地址,地址0X04
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
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 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
上一篇:stm32专题三:位带操作—GPIO输出和输入
下一篇:stm32专题五:时钟树(一)寄存器
推荐阅读
史海拾趣
人才是企业发展的重要保障。常州能动深知这一点,因此在发展过程中始终注重人才引进与培养。公司不仅积极引进高端技术人才,还建立了完善的培训体系,为员工提供多样化的培训机会,帮助他们不断提升技能水平。这些措施使得公司的人才队伍不断壮大,为公司的持续发展提供了有力保障。
在2004年,电子行业的两大巨头FUJITSU富士通与SUMITOMO住友电气工业宣布合并,成立了EUDYNA半导体有限公司。这一合并不仅是两家公司资源的整合,更是技术力量的融合。EUDYNA自诞生之日起,就承载着推动半导体行业创新的重任。通过不断研发,EUDYNA在光波、微波器件领域逐渐崭露头角,成为全球客户的信赖之选。
随着无线通信技术的快速发展,明波通信紧跟时代步伐,不断投入研发力量,在无线/移动通信领域取得了重大技术突破。公司成功开发出了一系列大规模集成电路(IP/ASIC)及相关控制软件,不仅提高了通信效率和质量,也赢得了国内外客户的广泛认可。这一时期的明波通信,已经成为国内通信行业的佼佼者。
在电子行业,技术创新是企业持续发展的关键。常州星海电子一直致力于技术的研发和创新。近年来,公司成功取得了一项名为“一种高反压二极管”的专利,通过采用先进的生产工艺和设计,实现了产品性能的优化和成本的降低。这一创新不仅提升了公司的市场竞争力,也为整个电子行业的发展注入了新的活力。
随着业务规模的不断扩大,ABL公司开始面临供应链管理的挑战。为了应对这一挑战,公司引入了先进的供应链管理系统,实现了从原材料采购、生产制造到产品销售的全程监控。同时,ABL公司还与供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和成本控制。通过优化供应链管理,ABL公司提高了生产效率和市场响应速度,进一步巩固了市场地位。
随着技术的成熟和产品的完善,Cornerstone Sensors开始积极拓展市场。公司参加了多个国际电子展会和技术研讨会,与全球各地的潜在客户和合作伙伴建立了联系。凭借卓越的产品性能和专业的技术支持,Cornerstone Sensors赢得了众多客户的信任,并成功打入了国际市场。同时,公司还积极寻求与上下游企业的合作,共同推动传感器技术的发展和应用。
1、电阻率---又叫电阻系数或叫比电阻。是衡量物质导电性能好坏的一个物理量,以字母ρ表示,单位为欧姆*毫米平方/米。在数值 上等于用那种物质做的长1米截面积为1平方毫米的导线,在温度20C时的电阻值,电阻率越大,导电性能越低。则物质的电阻率随 ...… 查看全部问答∨ |
|
1.1 电感的定义: 电感是导线内通过交流电流时,在导线的内部及其周围产生交变磁通,导线的磁通量与生产此磁通的电流之比。 当电感中通过直流电流时,其周围只呈现固定的磁力线,不随时间而变化;可是当在线圈中通过交流电流时,其周围将呈现出随 ...… 查看全部问答∨ |
|
USB 设备插入电脑显示无法识别的设备,加上上拉后问题解决,WHY? 各位高手,最近小弟在升级软件的时候发现,有的设备可以通过USB端口与电脑连接升级,而有些缺找不到口,或者升到一半中断。后来我们尝试在外部D+上接了上拉电阻,发现此问题消失,但是我们芯片内部已经有了这个上来,为什么还要外接,另外,接了上 ...… 查看全部问答∨ |
|
系统为2440+wince。 功能要求为:按键的按下和弹起都能检测到。 刚到始使用的键盘芯片为zlg7290,做完硬件,调试时才发现按键的弹起检测不到。 仔细看资料才发现,zlg7290按键的弹起不会产生中断。 请各位高手指教,如何通过其它的辅助的方法, ...… 查看全部问答∨ |
|
前提条件:设备句柄hid_dev_ok 用CreateFile()建立是好的。 硬件上写的firmware我也确认是好的,用bushound,来读取我长达200个char长度的字符串描述符没有问题。 但用VC2005编译环境(包含DDK的库调用),弄出来的程序获取设备字符串描述符就出问 ...… 查看全部问答∨ |
高手的挑战,wince实现一键关闭当前应用程序,相当于alt+f4 如题,设备上有一个键,无论我当前运行什么程序,按一下就退出了。相当于 windows 的ALT+F4, 请高手给出思路,或其它,感激不尽。 PS:不是在应用程序里写代码… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- “慧眼”识PCIe——阅读《PCIe要了解的十件事》和泰克OPEN-DAY的培训资料 抽奖、分享赢好礼!
- 直播已结束【ST 宽禁带高性能碳化硅(SiC)与氮化镓(GaN)产品技术及不同应用案例分享】(9:30入场)
- 更好的你我,更好的EEWorld!2020年终庆典
- 有奖直播|ST资料中心与通讯网路电源管理解决方案
- 评论有礼|【Discovery 】走进TI毫米波雷达世界 快速获得设计技能
- 了解PI InnoSwitch-CE,答题赢好礼
- 【EEWORLD第三十届】2011年09月社区明星人物揭晓!
- EEWORLD跨年芯币竞价——示波器、开发板、技术图书等你拿
- 任性DIY,在这等你来!
- 免费申请TI 样片, 晒订单赢好礼!