本章主要使用汇编语言编写STM32F103(以下称为“该芯片”)的启动代码。具体结构如图:
启动模式
该芯片可以通过设置BOOT0和BOOT1两个引脚,选择不同的启动方式,正常情况下BOOT0=0,BOOT1=0(0为低电平)。即,芯片将从Flash中加载代码启动。
当芯片上电/复位后,芯片首先从地址0x0000_0000处获取栈地址,然后将地址0x0000_0004处的值赋值给PC寄存器。按照PC寄存器的值,取第一条指令,执行......具体如图:
地址0x0800_0205处的具体代码如图:
简单来说,地址0x0000_0004处存放的是复位处理函数的地址。当上电/复位时,芯片硬件会自动将地址0x0000_0000处的栈地址赋值给MSP寄存器;将地址0x0000_0004处的复位函数地址值赋值给PC寄存器;然后就从PC寄存器所指的地址开始执行代码。
为什么Flash的地址明明是从0x0800_0000开始,但芯片是从地址0x0000_0000处开始取数据呢?原因很简单,当我们设置BOOT0=0,BOOT1=0时,芯片会将flash的地址范围映射到0x0000_0000~0x0007_ffff的地址范围内,如图:
向量表
当发生了异常并且要响应它时,CM3 需要定位其处理例程的入口地址。这些入口地址存储在所谓的“(异常)向量表”中。缺省情况下,CM3 认为该表位于零地址处,且各向量占用 4 字节,因此每个表项占用 4 字节。如图:
完整的向量表定义,请看源代码。
复位处理函数
用于上电/复位后,初始化芯片,让芯片能够以最好的状态运行。初始化完成后,跳转到_main函数继续执行。如图:
初始化SystemInit.s
主要是配置芯片的时钟,禁止所有中断,设置向量表位置。如图:
链接脚本
用于链接各个目标文件,定义各个代码段,数据段的位置。如图:
这个链接脚本的作用,可以简单地理解为规划Flash。如图:
所以,我们看到第一条指令是放在地址0x0800_0200处的。
Makefile
用于多文件编译管理。如图:
main.s
在本章中,main.s只做死循环,下一章将点亮LED灯。如图:
实验步骤:
1.如下图,创建一个文件夹,在文件夹中新建如图中的文件,按照上面所分析的编辑代码。
2.在命令行中,进入上一步创建的文件夹,输入make,编译项目。如图:
3.如无意外编译通过,然后按照前面章节讲述的步骤,将生成的.bin文件下载到芯片里。
4.简单对比.list文件与芯片flash中的数据,如图:
小结
本章到此结束,主要是简单介绍了该芯片的启动模式设置,启动流程。stm32F103的初始化没有什么复杂的设置,可以通过相关文档手册,了解向量表的内容;或参照STM32固件库v3.5的源代码。有关链接脚本,Makefile的知识,在本系列博客中不会讲解,网上有相关的资料文档。
上一篇:基于STM32从零写操作系统系列---基于寄存器写串口驱动
下一篇:基于STM32从零写操作系统系列---熟悉纯windows交叉编译环境
推荐阅读
史海拾趣
随着全球环保意识的提高,电子行业对环保的要求也越来越高。Aplus Flash Technology Inc公司积极响应环保号召,将环保理念融入产品设计和生产过程中。公司研发出了一款低能耗、环保型的闪存芯片,不仅降低了产品的能耗和碳排放,还提高了产品的可回收利用率。这一创新举措得到了消费者的广泛认可和支持,也为公司在市场上树立了良好的环保形象。
为了进一步扩大业务范围和提升品牌影响力,FlyWin集团积极寻求与其他行业的跨界合作。例如,公司与某知名无人机制造商达成战略合作,共同开发基于无人机平台的智能监测系统。该系统利用无人机的高空视角和快速响应能力,实现了对特定区域的实时监控和数据分析。这一合作不仅为双方带来了新的业务增长点,也为公司在无人机领域的布局奠定了坚实基础。
BLT Circuit Services公司深知人才是企业发展的根本。因此,公司注重人才培养和引进,建立了一套完善的人才培训体系。公司不仅为员工提供系统的职业技能培训,还鼓励员工参与各种行业交流活动,提升个人综合素质。这些举措不仅提高了员工的技能水平,也为公司的长期发展提供了有力的人才保障。
ECM Electronics Limited.自创立之初,就注重技术创新。公司投入大量研发资金,专注于开发高效、节能的电子产品。通过不断的技术迭代和产品创新,ECM成功推出了一系列具有竞争力的产品,逐渐在市场上建立了良好的口碑。同时,公司还积极与高校和科研机构合作,引进先进技术,为公司的持续发展提供了强大的技术支撑。
为了加快市场拓展和技术创新步伐,博通集成积极寻求与产业链上下游企业的战略合作。公司与多家知名企业建立了紧密的合作关系,共同推动无线通讯技术的发展和应用。通过战略合作,博通集成不仅获得了更多的市场资源和技术支持,还实现了与合作伙伴的共赢发展。
监控技术从上个世纪80年代进入我国以来,随着安防需求的急剧增加一直在飞速发展,从技术层面上来看,已经经历了多个不同的发展阶段。随着计算机技术的发展和网络的普及,目前,视频监控已经发展到了网络多媒体监控系统。 新一 ...… 查看全部问答∨ |
Windows Mobile 3.0 Pocket PC如何升级? 我在网上购的cu928.是Windows Mobile 3.0 Pocket PC的,很多插件都安装不了!想升级,但不知道如何?… 查看全部问答∨ |
我想设计一个无线收、发的小设计,主频在315M左右,要求距离在200米以上,但不知道怎么去设计,请各位大师指点一下,用什么片子比较合适,还有应该注意些什么。谢谢!… 查看全部问答∨ |
|
这块板子已经是第三版了,仍然存在主控3.3V供电短路到地的问题,以至于不曾通电,真实暴殄天物主控为LM3S5P36讨论见:https://bbs.eeworld.com.cn/thread-339655-1-1.html… 查看全部问答∨ |
各位大大你們好 我有看到版上很多人製作mp3的文章 但都是vs1003 and vs 1053 我想請問用vs1011也可以相容嗎? 我有比對vs1053 跟 vs 1011 最大差別有無MIC 因為小弟我只單純使用mp3的功能… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- 下载有好礼!超多精美礼品等您拿!
- 2018开“芯”学:Mentor两场知识有奖问答邀你新年充电
- EEWorld邀你来拆解(第10期)——玩具总动员
- 看展闯关赢好礼|MPS 芯云展厅与您不见不散!
- 4月TI两场EP直播,都挺好:超声气体流量计量创新方案+SimpleLink平台小鲜肉CC13X2/CC26X2专场
- 骏龙科技&ADI有奖直播:适用于视频、转换器、通信的千兆数字隔离器
- 泰克完整LED驱动测试方案 领跑节能亮化新时代
- 51奇趣DIY(LC测试仪已完成)
- ELEXCON 2022 深圳国际电子展11月6日(新档期)开幕,速领门票!更有N重好礼等你拿!
- ADI有奖下载活动之12 ADI基于视觉的占用检测解决方案