已经对启动文有了大致了解,再来看看系统在复位过程中做了哪些工作。复位程序如下:

 1 ; Reset handler
2
3 Reset_Handler PROC
4
5 EXPORT Reset_Handler [WEAK]
6
7 IMPORT SystemInit
8
9 IMPORT __main
10
11 LDR R0, =SystemInit
12
13 BLX R0
14
15 LDR R0, =__main
16
17 BX R0
18
19 ENDP

在复位程序内,声明了外部文件标号SystemInit和__main(__main 是一个标准的C语言库函数,用于初始化用户堆栈,最终还是进入main),因此需要在外部文件中按照这个标号名写出对应的函数,否则编译器将报错。在库文件system_stm32f10x.c内就写了SystemInit()函数;在main.c 文件内也写了一个main()函数。所以主函数是main这个名字。

系统复位后进入复位函数,首先调用SystemInit()函数,初始化STM32系统时钟,然后再进入我们熟悉的main()函数。

STM32入门系列-复位程序的更多相关文章

  1. STM32入门系列-STM32最小系统介绍

    STM32最小系统组成 单片机最小系统,也就是能够使得单片机正常运行程序,最少需要连接哪些器件.一般来说,STM32最小系统由四部分组成: 电源电路 复位电路 晶振电路 下载电路 STM32单片机由A ...

  2. STM32入门系列-启动文件介绍

    在启动文件内部使用的都是汇编语言,这个文件的作用是负责执行微控制器从"复位"到"开始执行 main 函数"中间这段启动时间所必须进行的工作.它完成的具体工作有: ...

  3. STM32入门系列-存储器与寄存器介绍

    介绍两部分内容: 什么是存储器映射 什么是寄存器及寄存器映射 为了让大家对存储器与寄存器有一个更清楚的认识,并且为之后使用 C 语言来访问 STM32 寄存器内容打下基础.等明白了如何使用 C 语言封 ...

  4. STM32入门系列-学习STM32要掌握的内容

    STM32芯片架构 STM32F103系列芯片的系统架构如下: STM32芯片基于ARM公司的Cortex-M3内核,由ST公司设计生产,内核与总线矩阵之间有I(指令).S(系统).D(数据)三条信号 ...

  5. STM32入门系列-STM32时钟系统,时钟使能配置函数

    之前的推文中说到,当使用一个外设时,必须先使能它的时钟.怎么通过库函数使能时钟呢?如需了解寄存器配置时钟,可以参考<STM32F10x中文参考手册>"复位和时钟控制(RCC)&q ...

  6. STM32入门系列-STM32时钟系统,时钟初始化配置函数

    在前面推文的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,然后进入主函数main.那么我们就来看下SystemInit()函数到底做了哪些操作,首先打开我们前面使 ...

  7. STM32入门系列-创建寄存器模板

    介绍如何使用 KEIL5 软件创建寄存器模板, 方便之后使用寄存器方式来操作STM32开发板上的LED,让大家创建属于自己的寄存器工程模板. 获取工程模板的基础文件 首先我们在电脑任意位置创建一个文件 ...

  8. STM32入门系列-STM32时钟系统,自定义系统时钟

    在时钟树的讲解中我们知道,通过修改PLLMUL中的倍系数值(2-16)可以改变系统的时钟频率.在库函数中也有对时钟倍频因子配置的函数,如下: void RCC_PLLConfig(uint32_t R ...

  9. STM32入门系列-STM32时钟系统,STM32时钟树

    时钟对于单片机来说是非常重要的,它为单片机工作提供一个稳定的机器周期从而使系统能够正常运行.时钟系统犹如人的心脏,一旦有问题整个系统就崩溃.我们知道STM32属于高级单片机,其内部有很多的外设,但不是 ...

随机推荐

  1. 如何使用 Python 進行字串格式化

    前言: Python有几种方法可以显示程序的输出:数据可以以人类可读的形式打印出来,或者写入文件以供将来使用. 在开发应用程式时我们往往会需要把变数进行字串格式化,也就是说把字串中的变数替换成变量值. ...

  2. 使用IBMMQ时的那些事

    之前项目一直使用的是ActiveMQ,突然要变更成IBMMQ,整理了一些搭建MQ和代码连接MQ是遇到的问题,记录一下. (1)三个系统之内部使用IBMMQ交互,所以应设立两个本地接收队列和两个发送队列 ...

  3. NN相关资源(持续更新)

    Iris数据介绍 http://www.cnblogs.com/Belter/p/8831216.html

  4. 一文搞懂AQS及其组件的核心原理

    @ 目录 前言 AbstractQueuedSynchronizer Lock ReentrantLock 加锁 非公平锁/公平锁 lock tryAcquire addWaiter acquireQ ...

  5. Java知识系统回顾整理01基础05控制流程06break

    一.break break:结束循环 二.练习--直接结束当前for循环 public class HelloWorld { public static void main(String[] args ...

  6. 001 win10下安装linux子系统--Ubuntu及其图形界面

    首次启动图形界面关键步骤及相关命令: 步骤: 打开Xlunch 打开XLaunch,选择:"one large window",Display number设置成0,其它默认即可, ...

  7. SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理|前后端分离(下)----筑基后期

    写在前面 在上一篇文章<SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理(上)----筑基中期>当中,我们初步实现了SpringBoot整合Shiro ...

  8. Spring Cloud Config配置git私钥出错

    重装了电脑之后,重新生成了ssh key文件id_rsa和id_rsa.pub文件. 然后在配置中心的配置了私钥之后启动项目,报错如下: Reason: Property 'spring.cloud. ...

  9. navicat 生成注册码( 仅供学习使用 )

    前言,由于navicat使用比较顺手,刚好前段时间试用期到,又看看了怎么生成注册码,特地记录下使用 . 1.运行 找到 navicat 文件(exe) 2.生成注册文件(报错好,后续会用到) 3.断网 ...

  10. 6.Android-五大布局

    Android 五大布局如下所示: LinearLayout 线性布局 只能指定一个方向(垂直/水平)来布局 RelativeLayout 相对布局 通过某个控件为参照物,来定位其它控件的位置的布局方 ...