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

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

3天内不再提示

stm32启动过程详解

工程师邓生 来源:未知 作者:刘芹 2023-12-08 15:47 次阅读

STM32启动过程详解

近年来,STM32微控制器嵌入式系统中的应用越来越广泛。STM32微控制器具有高性能、低功耗、易扩展和丰富的外设接口等优势。而要让STM32微控制器正常工作,首先要了解它的启动过程。本文将详细介绍STM32的启动过程。

一、复位电路

对于STM32微控制器来说,复位是启动的第一步。任何系统都需要一个稳定的状态来启动,这就是复位的作用。STM32微控制器提供了多种复位方式,包括用户复位、电源复位编程复位和外部复位。

1. 用户复位

用户复位是通过设置控制寄存器的某个位实现的,这个位称为外部复位位控制位。通过将这个位设为1,可以触发复位操作。

2. 电源复位

电源复位是通过断电和重新上电实现的。只要电源电压低于微控制器的工作电压范围,就会触发电源复位。

3. 编程复位

编程复位是通过通过JTAG/SWD接口进行复位。在调试期间,可以使用编程器发送复位命令。

4. 外部复位

外部复位一般是通过外部信号,如按键等触发的。通过设置相应的IO口为复位引脚,并且与一个特定的电平或电平变化绑定,就可以触发外部复位。

二、复位向量表

复位后,STM32会运行内部的复位向量表。STM32的复位向量表是一个存储着一系列函数地址的表格,这些函数是程序执行的起点。复位向量表中的第一个地址是复位例程的地址。

在STM32的内存布局中,复位向量表位于存储器的起始地址。复位向量表存储着一系列函数地址,包括复位例程地址、中断服务例程地址等。在复位过程中,STM32会读取复位向量表,并跳转到复位例程的地址开始执行。

三、系统初始化

在执行复位例程之前,STM32需要进行一系列的系统初始化工作,以确保系统正常运行。系统初始化主要包括时钟初始化和外设初始化。

1. 时钟初始化

时钟是微控制器工作的基础。STM32支持多种时钟源,包括内部时钟源和外部时钟源。时钟初始化主要包括选择时钟源、配置时钟分频系数等工作。时钟初始化完成后,微控制器才能够正常工作。

2. 外设初始化

STM32微控制器内置了丰富的外设接口,包括通用输入输出口(GPIO)、通用串行总线(SPI/I2C/UART)、定时器模数转换器等。在系统初始化阶段,需要通过配置相应的寄存器,使这些外设接口正常工作。

四、复位例程

复位例程是STM32在复位后首先执行的函数。复位例程的作用是初始化处理器的寄存器并设置通用模式。

复位例程主要包括以下几个步骤:

1. 初始化堆栈指针:堆栈指针是存储在寄存器中的,指向当前函数栈帧的栈顶。

2. 初始化全局变量:复位例程会将全局变量的初始值设置为0或者其他默认值。

3. 初始化处理器寄存器:包括设置处理器的工作模式、使能中断等。

4. 跳转到主函数:复位例程完成后,会跳转到用户定义的主函数,开始执行用户的应用程序。

五、应用程序

在复位例程执行结束后,STM32会跳转到用户定义的主函数,开始执行用户的应用程序。用户可以在主函数中编写自己的代码,实现各种功能。

在应用程序中,可以通过调用STM32提供的库函数或者进行直接读写寄存器的方式来控制STM32的外设。通过合理运用外设接口,可以实现丰富的功能,如控制LED灯、读取按键、通过串口发送数据等。

六、总结

本文详细介绍了STM32的启动过程,包括复位电路、复位向量表、系统初始化、复位例程和应用程序等。了解STM32的启动过程有助于开发者更好地理解STM32微控制器的工作原理,并能够针对具体应用场景进行优化和调试。

STM32微控制器具有性能强大、易扩展和丰富的外设接口等优势,广泛应用于各种嵌入式系统中。通过合理利用STM32的启动过程和功能,可以实现各种应用,如智能家居工业自动化、医疗设备等。因此,深入了解STM32的启动过程对于嵌入式开发人员来说是非常重要的。

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

    关注

    48

    文章

    6809

    浏览量

    147636
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3430

    浏览量

    128219
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348738
收藏 人收藏

    评论

    相关推荐

    STM32WBA Nucleo-64设置主频为100M,发现启动过程中卡死在PWR_VOSR_VOSRDY,为什么?

    使用ST官方的STM32WBA Nucleo-64板子, 当设置主频为100M,发现启动过程中卡死在PWR_VOSR_VOSRDY; 设置主频为16MHz的时候,可以正常完成初始化。 使用的是CodeMx生成的工程 这是啥原因呢?看手册也没找到原因
    发表于 03-14 08:28

    电源芯片启动过冲有哪些影响?怎么测试电源芯片的启动过冲?

    电源芯片的启动过冲过大会对芯片中的元件造成损害,例如电容、电感等。这些元件在受到过冲电压的作用时可能会出现短路或开路等现象,从而造成芯片损害,影响芯片的整体稳定性和可靠性,因此启动过冲是电源芯片测试中必不可少的项目。电源芯片的启动过
    的头像 发表于 12-27 15:48 343次阅读
    电源芯片<b class='flag-5'>启动过</b>冲有哪些影响?怎么测试电源芯片的<b class='flag-5'>启动过</b>冲?

    kernel到android核心启动过程

    总结一个图:kernel 到android核心启动过程 kernel镜像执行跳转到start_kernel开始执行,在rest_init会创建两个kernel 进程(线程),其分别
    的头像 发表于 12-04 16:59 213次阅读
    kernel到android核心<b class='flag-5'>启动过程</b>

    logd的启动过程和内容

    logd作为native service,系统启动过程通过读取rc文件来启动,相关的属性定义在如下logd.rc文件中。 2.2.1 logd启动过程 logd启动后会存在三个用来服务
    的头像 发表于 11-23 16:54 362次阅读
    logd的<b class='flag-5'>启动过程</b>和内容

    在Linux启动过程中, 想将PC13 pin配置为输出/拉起,如何修改设备树?

    在 Linux 启动过程中, 我想将 PC13 pin 配置为输出/ 拉起 。 我该如何修改设备树 。
    发表于 11-13 06:21

    ATF的启动过程介绍

    ATF的启动过程根据ARMv8的运行模式(AArch32/AArch64)会有所不同,但基本一致。 在AArch32中是不会去加载bl31而是将EL3或者Monitor模式的运行代码保存在bl32
    的头像 发表于 11-07 15:48 480次阅读
    ATF的<b class='flag-5'>启动过程</b>介绍

    ARM64位与ARM32位OP-TEE启动过程的差异

    ARM32的OP-TEE与ARM64的OP-TEE启动过程大致相同。ARM64的OP-TEE的_start函数定义在generic_entry_a64.S文件中,而且该函数不像ARM32位系统
    的头像 发表于 11-07 15:12 282次阅读

    RL78启动过程详解

    RL78启动过程详解
    的头像 发表于 09-28 16:39 863次阅读
    RL78<b class='flag-5'>启动过程</b><b class='flag-5'>详解</b>

    STM32上电启动过程分析(START_TEST代码实例)

    STM32作为一款高端 Cortex-M3系列单片机,有必要了解它的启动文件。打好基础,为以后优化程序,写出高质量的代码最准备。
    发表于 08-31 14:36 1040次阅读
    <b class='flag-5'>STM32</b>上电<b class='flag-5'>启动过程</b>分析(START_TEST代码实例)

    ESP32学习笔记:存储分布和启动过程

    今天我们来说说ESP32 for Arduino存储分布以及启动过程
    的头像 发表于 07-14 15:10 1607次阅读
    ESP32学习笔记:存储分布和<b class='flag-5'>启动过程</b>

    谈一下STM32启动流程

    下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存,这就是所谓的启动过程
    的头像 发表于 07-04 17:09 1026次阅读
    谈一下<b class='flag-5'>STM32</b>的<b class='flag-5'>启动</b>流程

    求大佬分享关于N32926启动过程

    大家好,最近在使用n32926做网络摄像头功能,查阅了一下新塘的SDK发现没有**介绍n32926的详细启动过程。之前用6410都是由uboot来引导linux 内核,现在先想自己实现一个uboot类似功能的bootloader但是由于不了解n32926的启动流程无从下手
    发表于 06-25 06:29

    详解STM32启动文件

    本文对STM32启动文件startup_stm32f10x_hd.s的代码进行讲解,此文件的代码在任何一个STM32F10x工程中都可以找到。
    发表于 06-10 17:19 710次阅读
    <b class='flag-5'>详解</b><b class='flag-5'>STM32</b><b class='flag-5'>启动</b>文件

    直流他励电动机的调节与制动过程

    有关直流他励电动机的几种调节与制动过程,包括电动机正向启动加速过程,正向弱磁升速调节过程,正向强磁降速调节过程,正向电压反接制
    的头像 发表于 05-31 09:47 1459次阅读
    直流他励电动机的调节与制<b class='flag-5'>动过程</b>

    一文了解STM32启动过程

    每一款芯片的启动文件都值得去研究,因为它可是你的程序跑的最初一段路,不可以不知道。通过了解启动文件,我们可以体会到处理器的架构、指令集、中断向量安排等内容,是非常值得玩味的。
    发表于 05-08 09:44 2423次阅读
    一文了解<b class='flag-5'>STM32</b><b class='flag-5'>启动过程</b>