STM8单片机的启动过程。

大学的时候,学过一学期的STM8单片机,当时也算下了挺大的功夫,用的是我挺佩服的一个老师的课本,是用汇编语言教的。不过佩服归佩服,这本书其实现在想起来,一些基础的东西讲得不是很明白,比如说第一章中讲单片机实现原理,居然用51单片机来讲,也用了51单片机的代码,可这本书是STM8好么!用51也要说一下吧,明显是出书出得有一些仓促了。而且书中出现了一些错别字,对我这种强迫症的人来讲,呵呵。当然好的地方就是里面有很多工程实际的东西,也讲到了用STM8汇编实现多任务的例子,和数字滤波等在我当时看来很奇妙很有趣的东西。我还是挺佩服他(潘永雄)的,这是实话,这本书我翻了n多遍,一直不舍等捐掉,其它的什么电路啊,模电啊,数电啊都已经捐给别人了。
这里写图片描述
好吧,进入主题。在讲STM8单片机的启动过程前,大家先要对STM8的存储映射(Memory Map)有一个基本的认识, 这个信息可以从STM8的data sheet上面找到。以下是截图(当然这是stm8其中一个系列的存储映射,其它的可能不一样):
stm8s
大家可以看到一个叫“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单片机的启动过程了。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
STM32单片机启动流程主要包括以下几个步骤: 1. 复位(Reset):当单片机上电或者复位信号发生时,CPU进入复位状态,在该状态下,所有寄存器都会被清零,系统时钟源被切换到复位时钟源,以及一些特殊功能寄存器被初始化。 2. 系统时钟初始化:在复位状态下,单片机会将系统时钟源切换到复位时钟源,默认情况下,系统时钟源为内部RC振荡器。在系统时钟初始化的过程中,可以选择将系统时钟源切换到外部晶振或者其他外部时钟源。 3. 初始化向量表:向量表包含了所有中断向量的地址,这些中断包括复位中断、异常中断等。在启动流程中,需要将向量表的起始地址设置为合适的位置,以确保中断处理能够正确执行。 4. 初始化堆栈指针:堆栈指针用于管理函数调用和中断处理时的局部变量。在启动流程中,需要将堆栈指针初始化为合适的位置,以确保函数调用和中断处理能够正常进行。 5. 初始化全局变量:在启动流程中,需要将全局变量初始化为合适的初值,以确保程序正常运行。 6. 跳转到主程序:在完成上述初始化工作后,启动流程会跳转到主程序的入口地址,开始执行用户编写的应用程序。 需要注意的是,以上是一个简化的启动流程,实际的启动流程可能会根据具体的单片机型号和应用需求有所不同。在开发过程中,可以参考相应的开发文档和参考手册,了解具体单片机启动流程和相关配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值