0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

带你一步步了解STM32启动代码

电子设计 来源:网络整理 作者:工程师1 2018-04-19 13:40 次阅读

对于熟悉电脑的伙伴们来说,BIOS(那个蓝色的界面)可能不会太陌生吧,这货就是电脑的启动代码。没有BIOS的电脑,那注定是一块板砖!BIOS主要是做一些开机前的准备工作,例如系统时间设定、启动顺序。。。扯远了

其实电脑本身就是从单片机而来,那么单片机也是有启动代码的,只是我们绝大部分情况 不去关心它。

启动代码究竟都干了些什么工作,为何需要它?想想你在c语言中用到了什么东西,而这些东西却是拿来就可以用的?堆、栈!没错,就是他们。我们知道堆和栈是内存中划分出的一块区域,那为什么我们没有亲自划分呢,因为启动代码帮了你的忙!!!再想想单片机工作的时候,有哪些配置被我们忽略了,而它却可以用?时钟,就是这货,我们可以不配置时钟,而你发现它竟然有默认值!还是启动代码帮了你

接下来仔细研究一下stm32的启动代码,首先要知道启动代码藏在哪里:一个叫做startup的汇编文件。启动代码是对硬件的一个最初级的配置,它必须用汇编语言来实现,汇编是真正的硬件编程语言。

从上到下解读启动代码

1、定义栈大小

2、定义堆大小

3、中断向量地址

ps:Cortex-M4内核要求内存的第一个地址是栈指针,第二个地址开始为中断向量。而中断向量的第一个必须是复位,因为代码是从上到下执行,开机首先遇到的就是复位

4、复位中断处理函数

ps1:仔细那看有两个东西需要注意:“SystemInit”这个是时钟初始,“__main”这一句代表跳转到“main”函数。正因为复位这样的写法,所以程序都是从main函数开始执行的

ps2:“SystemInit”具体实现过程在stm32fxxx.c,“__main”也是在某个地方与真正的main关联起来

5、其他中断处理函数

ps1:绝大部分中断的实现系统没有给出,等待程序猿去写。但是中断的名字我们都可以看到的,每一个名字都和上面向量表中对应着。我们知道函数名其实就是一个地址,而中断的入口地址是固定的,只要找对名字,那地址也就找对了。

ps2:中断的入口地址由内核和芯片决定,无法更改。因此不要改启动代码中的中断向量表

6、初始化堆、栈


ps:正因为堆和栈已经被初始化,所以你的C语言才可以顺利的执行

启动代码是非常关键的,所有的CPU都有启动代码。这里完成了最基本的初始化功能,尤其是中断向量表,程序猿每一个中断函数的名字都要与启动代码中的向量表对应,否则中断是无法进入的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6034

    文章

    44554

    浏览量

    634560
  • STM32
    +关注

    关注

    2270

    文章

    10895

    浏览量

    355706
  • BIOS
    +关注

    关注

    5

    文章

    469

    浏览量

    45680
收藏 人收藏

    评论

    相关推荐

    虚拟现实正一步步向我们走来

    显然,虚拟现实大发展的春天正在到来,虚拟现实正一步步走向消费者。那么,虚拟现实究竟涉及哪些重点技术领域?又将对整个产业带来怎样的影响?未来的“抓手”又有哪些?
    发表于 10-26 16:38 884次阅读

    外国牛人教你一步步快速打造首台机器人(超详细)

    外国牛人教你一步步快速打造首台机器人(超详细)
    发表于 08-15 19:30

    一步步写嵌入式操作系统—ARM编程的方法与实践ch02

    一步步写嵌入式操作系统—ARM编程的方法与实践ch02
    发表于 08-20 20:54

    CC2530一步步演示程序烧写

    CC2530一步步演示程序烧写第一步——先安装IAR开发环境第二歩——安装CC2530烧写工具第三歩——CC2530串口配置软件使用具体完整步骤看下面文档
    发表于 03-03 14:33

    一步步建立_STM32_UCOS_模板

    一步步建立_STM32_UCOS_模板
    发表于 09-29 11:46

    菜鸟一步步入门SAM4S-XPLAINED--IAR开发环境

    菜鸟一步步入门SAM4S-XPLAINED--IAR开发环境
    发表于 01-25 10:55

    一步步进行调试GPRS模块

    背景:在不知道硬件是否正确情况下,一步步进行调试,最终完成调试。以下是自己调试步骤。1、从gprs模块TX ,RX 单独焊接两个线出来,通过上位机发送AT指令,是否能正常工作。
    发表于 01-25 07:33

    ARM嵌入式系统如何入门?怎样一步步的去学习

    ARM嵌入式系统的学习步骤对于很多新手来说,不知道ARM嵌入式系统如何入门?怎样一步步的去学习?接下来信盈达教育嵌入式培训网就详解的为大家介绍:关于ARM嵌入式系统学习步骤:1.做个最小系统板:如果
    发表于 02-16 06:33

    stm32是如何一步步实现设置地址匹配接收唤醒中断功能的

    为什么要设置地址匹配接收唤醒中断呢?stm32是如何一步步实现设置地址匹配接收唤醒中断功能的?
    发表于 02-28 08:07

    一步步写嵌入式操作系统

    一步步写嵌入式操作系统_ARM编程的方法与实践
    发表于 07-14 11:32 0次下载

    看电工技术是如何一步步沦为勤杂工的

    相信很多的电工老师傅也都听说过这种话,那电工究竟是不是勤杂工?电工技术工种是如何一步步的沦为勤杂工的,我们今天就重点来看看。
    的头像 发表于 02-18 15:47 4130次阅读

    看电路是怎么把电压一步步顶上去的?资料下载

    电子发烧友网为你提供看电路是怎么把电压一步步顶上去的?资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-16 08:47 13次下载
    看电路是怎么把电压<b class='flag-5'>一步步</b>顶上去的?资料下载

    ROM与RAM 单片机上电后如何一步步执行?资料下载

    电子发烧友网为你提供ROM与RAM 单片机上电后如何一步步执行?资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-21 08:53 12次下载
    ROM与RAM 单片机上电后如何<b class='flag-5'>一步步</b>执行?资料下载

    一步步重新演绎汽车驾驶体验

    一步步重新演绎汽车驾驶体验
    发表于 11-04 09:52 0次下载
    <b class='flag-5'>一步步</b>重新演绎汽车驾驶体验

    基于一步步蒸馏(Distilling step-by-step)机制

    为优化LLM为“小模型/少数据/好效果”,提供了种新思路:”一步步蒸馏”(Distilling step-by-step)
    的头像 发表于 05-16 10:24 1222次阅读
    基于<b class='flag-5'>一步步</b>蒸馏(Distilling step-by-step)机制