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专题五:时钟树(一)寄存器
推荐阅读
史海拾趣
在电子行业的发展过程中,市场波动和风险挑战是不可避免的。某一年,全球半导体市场出现了严重的产能过剩,导致产品价格大幅下跌。面对这一挑战,BCD Semi(Diodes)公司及时调整生产策略,优化产品结构,降低生产成本,成功度过了这一行业寒冬。
HTC Korea(前身为TAEJIN Technology Co., Ltd.)成立于2000年,最初以Linear IC产品的研发及生产为主,逐步在通信、消费类及PC等应用领域稳步发展。然而,公司的真正突破发生在2006年,这一年HTC决定从OEM代工厂转型为自主品牌制造商。这一转型并非易事,面临着合作伙伴转变为竞争对手的风险,导致股价一度暴跌。但HTC坚持下来,推出了HTC Touch和HTC Diamond等经典机型,成功吸引了市场的关注,股价逐渐回升,最终奠定了其在手机市场的重要地位。
1996年,ebm-papst独资的中国子公司(依必安派特)正式成立,标志着公司正式进入中国市场。当时,中国市场正处于经济快速增长的阶段,ebm-papst看准这一机遇,决定加大在中国的投入。除了在上海设立总部外,公司还在北京、西安、深圳等地建立了分公司或办事机构,形成了覆盖全国的销售网络。这一战略布局使得ebm-papst能够迅速适应中国市场的需求,并为其在中国市场的快速发展奠定了基础。
近年来,随着数字化技术的快速发展和应用普及,电子行业也迎来了数字化转型的浪潮。ELEKTRO-PLAST NASIELSK公司紧跟时代步伐,积极推进数字化转型工作。公司引入先进的数字化设备和系统提升生产效率和质量水平;同时加强信息化建设,实现数据共享和协同办公;此外还通过电子商务平台拓展销售渠道和服务范围。数字化转型不仅提升了公司的竞争力还为客户提供了更加便捷高效的服务体验。
- 创业初期与技术创新
CT Micro公司最初由几位电子工程领域的专家创立,他们看到了微型计算机断层扫描(Micro-CT)技术在电子行业中的巨大潜力。初期,公司面临着资金短缺和技术难题,但他们通过不断研发和创新,成功开发出了一款具有高性价比的Micro-CT设备,迅速获得了市场的认可。
- 市场拓展与合作伙伴关系
随着产品的成熟,CT Micro开始积极寻求市场拓展。他们与多家电子制造企业建立了合作关系,为这些企业提供Micro-CT设备的定制服务。通过与这些企业的合作,CT Micro不仅扩大了市场份额,还进一步提升了产品的技术水平和应用范围。
- 研发升级与产品迭代
面对日益激烈的市场竞争,CT Micro不断投入研发力量,对Micro-CT设备进行升级和迭代。他们成功推出了多款新型设备,具有更高的分辨率、更快的扫描速度和更低的辐射剂量。这些新产品的推出,进一步巩固了CT Micro在电子行业中的领先地位。
- 国际化战略与市场拓展
随着国内市场的饱和,CT Micro开始实施国际化战略。他们积极参与国际展览和研讨会,展示自己的产品和技术实力。同时,他们还在海外设立了销售和服务中心,为国际客户提供更加便捷的服务。通过这些努力,CT Micro成功打开了国际市场的大门。
- 社会责任与可持续发展
在快速发展的同时,CT Micro也积极履行社会责任。他们注重环保和可持续发展,采用环保材料和节能技术生产产品。此外,他们还积极参与公益事业,为贫困地区的教育和医疗事业贡献力量。这些举措不仅提升了公司的社会形象,也为其可持续发展奠定了坚实基础。
请注意,这些故事框架是虚构的,并不代表CT Micro公司的实际发展情况。如果您需要了解CT Micro公司或类似公司的真实故事,建议您查阅相关公司的官方网站、新闻报道或行业分析报告。
我在wince的public目录下的驱动代码中加入RETAILMSG(1,(.....)), 可是在串口中无法打印出任何trace,为什么? 在palform的bsp中加的trace都能够正常显示出来。 请大家指教一二。。。。。。。谢谢!!… 查看全部问答∨ |
|
板子没有USB,但有个串口、和串口转USB的接口(这样PC的USB连着板子的串口),板子有办法可以进DFU模式,但PC这边怎么弄呢?我想的是:先装上驱动,然后用DFU客户端(是DfuSe Demo吧)下载DFU文件,但安装驱动(Driver\\STDFU.inf)时windows ...… 查看全部问答∨ |
|
【项目总结】基于lm3s的幅频特性测试仪,包含AD转换,ad9850扫频信号产生,lcd显示 前段时间学校安排制作一个幅频特性测试仪,一开始使用的51,做到一半感觉比较吃力。于是学校就给我我一块lm3s811,拿到这个板子也就两周不到,昨天刚刚交了作品。两周时间学 ...… 查看全部问答∨ |
|
IAP升级时用Keil for ARM 4.10 与4.23 为什么产生的BIN文件为什么不一样?? 4.10 运行在 XP环境, 4.23运行在 Win7 环境。。。。。。 有没有遇到过这样的情况??我 用的是Win7环境。。。。… 查看全部问答∨ |