大学的时候,学过一学期的STM8单片机,当时也算下了挺大的功夫,用的是我挺佩服的一个老师的课本,是用汇编语言教的。不过佩服归佩服,这本书其实现在想起来,一些基础的东西讲得不是很明白,比如说第一章中讲单片机实现原理,居然用51单片机来讲,也用了51单片机的代码,可这本书是STM8好么!用51也要说一下吧,明显是出书出得有一些仓促了。而且书中出现了一些错别字,对我这种强迫症的人来讲,呵呵。当然好的地方就是里面有很多工程实际的东西,也讲到了用STM8汇编实现多任务的例子,和数字滤波等在我当时看来很奇妙很有趣的东西。我还是挺佩服他(潘永雄)的,这是实话,这本书我翻了n多遍,一直不舍等捐掉,其它的什么电路啊,模电啊,数电啊都已经捐给别人了。

好吧,进入主题。在讲STM8单片机的启动过程前,大家先要对STM8的存储映射(Memory Map)有一个基本的认识, 这个信息可以从STM8的data sheet上面找到。以下是截图(当然这是stm8其中一个系列的存储映射,其它的可能不一样):

大家可以看到一个叫“2 Kbyte boot Rom”的存储区域,硬件复位(从关机到开机)的复位向量就在这个区域里面,这个很特殊,因为下面有一个叫“32 interrupt vectors”的存储区域,其它所有的中断向量(见下表)都存在这个区域里面,只有硬件复位向量不是。

所以当硬件复位后,也即STM8从关机到开机后,最先执行的是在boot Rom上的代码。boot Rom上面的代码叫做bootloader,bootloader的主要功能是通过单片机集成的外设(UART,SPI,CAN)来烧写单片机程序到单片机里面而不需要使用ST-Link,不过这是在单片机第一次烧写或者Option bytes(这个也在存储映射那个图里)里的BL和NBL字节分别设置为55和AA并且内存的读保护没有启用的时候才可以烧写的,如果不满足条件了,可以使用ST-Link连接单片机在STVP里面设置Option bytes使之满足。从boot Rom启动后的具体流程图可以看下图(该图来自于官方的UM0560),也可以直接看文字。

满足前面所讲的条件之后,STM8会检测是否有来自主机(通常为电脑端)的同步信号,若有同步信号则STM8交给主机控制,主机就可以向STM8下载程序了(下载完后由主机指定程序开始执行的地址)。STM8若没有检测到主机的同步信号,则等待1秒钟后超时,超时后判断单片机是否还没有烧写过程序,如果是则回到硬件复位的状态,重新上面从硬件复位开始的流程。而如果之前有烧写过程序了,则到“32 interrupt vectors”里面找到复位向量的入口,进入向量所指的地址(通常就是我们所说的main函数了)开始执行程序。
那如果bootloader在开始执行的时候就不满足可以烧写程序的条件呢?也是到“32 interrupt vectors”里面找到复位向量的入口,进入向量所指的地址开始执行程序。
以上就是STM8单片机的启动过程了。

STM8单片机的启动过程。相关推荐

  1. STM32单片机启动过程详解

    本文详细介绍STM32单片机启动的过程,既从上电Reset_Handle跳转到main()函数的过程.其中,会着重解释__main的汇编代码 STM32启动过程 1. 从Reset_Handler开始 ...

  2. STM32(Cortex-M3)启动过程+IAR中xcl及icf文件详解

    一:STM32(Cortex-M3)启动过程(入口地址) ARM7和ARM9启动时从绝对地址0X00000000开始执行复位中断程序,即固定了复位后的起始地址,但中断向量表的位置是可变的. Corte ...

  3. STM8单片机定时器1编码器功能使用详解

    ​​​​​​​目录 编码器简介 硬件接线图 编码器接口模式介绍 编写代码 寄存器简介 初始化代码 仿真调试 添加实时观察变量 观察变量值变化 编码器用法总结 查询方式读取 中断方式读取 编码器简介 这 ...

  4. STM8单片机ADC连续扫描模式

      当STM8单片机使用ADC功能读取多个通道的值时,可以使用连续模式,但是连续模式一次只能采样一个通道的值,那么如果要采样多个通道时怎么办呢?STM8提供了一个多通道连续采样扫描模式.也就是说多个通 ...

  5. STM8单片机复位源判断

    最近在调试系统的时候,发现单片机老是复位,于是想着用程序来判断一个单片机的复位信号是来自于哪里.查找资料发现STM8单片机的复位源总共有9种 ●NRST引脚产生的外部复位 ● 上电复位(POR) ● ...

  6. BootLoader与MCU启动过程

    STM32那点事(1)_STM32F40_41xx启动文件详解 STM32 官方为广大开发者提供一套统一开发固件,主要是屏蔽寄存器封装,提供初始化等功能,较少开发者负担.只需要调用相关模块封装,对相关 ...

  7. mini-uboot 启动过程简单分析

    单片机有最小系统,所谓最小系统,就是单片机能正常工作所需要的最少外设.对于Uboot来说,同样有个最小系统,因为Uboot最主要的功能就是引导内核.下面我们通过一个简单的Mini-Uboot来分析Ub ...

  8. U-Boot移植教程之一:U-Boot分析与启动过程

    内容来自 韦东山<嵌入式Linux应用开发完全手册> 一.Bootloader的引出 当系统上电时,并不是直接进入Linux系统的,而是需要先执行一段程序来把单片机的硬件外围初始化好,比如 ...

  9. S5PV210启动过程

    常用器件特性 内存: SRAM 静态内存 特点就是容量小.价格高,优点是不需要软件初始化直接上电就能用 DRAM 动态内存 特点就是容量大.价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使 ...

  10. STM8单片机通过PWM触发ADC同步采样

      在做数字开关电源开发过程中使用最多的就是PWM功能和ADC采样功能.ADC采样时采样的时间点很重要,必须在PWM输出高电平的时候取采样,这样采样出来的数据才是最准确的.在STM8单片机中,可以通过 ...

最新文章

  1. 数据中心规划设计中值得注意的八个问题
  2. SQLServer图数据库一些优点
  3. WINCE基于hive注册表的实现
  4. 求n个数的最大公因数和最小公倍数(c)
  5. c语言中的0UL或1UL是什么意思
  6. 前端学习(1305):项目依赖
  7. bp神经网络预测模型_【2020顶会KDD】AutoST:面向时空预测的高效神经网络学习模型...
  8. python科学计算教学_Python最好用的科学计算库:NumPy快速入门教程(二)
  9. POJ - 1127 Jack Straws(几何)
  10. html三列布局和两列布局,CSS 常见两列布局、三列布局
  11. Bind服务简单应用之一(介绍)
  12. ubuntu16.04使用ipv6
  13. Ubuntu 18.04 安装 Moodle
  14. 测试职业发展前景之职业发展方向
  15. 比赛介绍评委的pp咋做_播音主持专业如何做自我介绍?
  16. AM5728-Uboot SPL 代码走读
  17. 图片报道:2008年12月4日夜晚,暴风雪突袭烟台(下)
  18. Visual C++ 新增功能(2003 - 2015)
  19. 基于java学生签到考勤系统
  20. 大数据毕设/课设 - 水质情况实时监测预警可视化设计与实现

热门文章

  1. nifi集群_nifi架构
  2. 传感器 动态误差计算
  3. js继承的几种方式,圣杯模式
  4. Cocos2d-x 整理 SDK,易接流程(写给自己看的
  5. 如何简单地设置一个LoRa网关?
  6. 熊逸《唐诗50讲》感时篇 - 学习笔记与感想
  7. 文件 - 介绍 含PEM文件
  8. 信息熵、相对熵、交叉熵
  9. 数据结构(一)线性链表、非线性链表、稀疏数组与队列、单向链表
  10. NPDP是什么考试?产品经理必知