stm32系统工作流程
stm32系统工作流程
STM32 系统(基于 ARM Cortex-M 内核)的工作流程可以概括为以下几个关键阶段,从硬件上电到应用程序运行:
-
上电复位:
- 当给 STM32 芯片供电(或按下复位按钮)时,硬件复位电路被触发。
- 芯片内部的各个逻辑单元(寄存器、外设、内核)被强制进入一个已知的、确定的初始状态。
- 复位信号保持有效一段时间(由芯片内部或外部电路决定),确保电源稳定。
-
时钟初始化:
- 复位释放后,芯片首先使用其内部高速时钟(HSI)或内部低速时钟(LSI)作为系统时钟源。这些时钟通常精度较低但能快速启动。
- 时钟树配置: 用户程序(或启动代码)通常会配置复杂的时钟树:
- 启动外部高速时钟(HSE - 外部晶振)或外部低速时钟(LSE - 外部 32.768KHz 晶振,常用于 RTC)。
- 配置锁相环(PLL)将时钟源倍频到更高的频率,作为系统主时钟。
- 配置分频器,为内核(
HCLK)、系统总线(PCLK1,PCLK2)、外设等提供不同频率的时钟。 - 这个阶段为整个系统的高速、稳定运行提供动力基础。
-
初始化堆栈指针:
- Cortex-M 内核从向量表(Vector Table)的最开始(地址
0x0000 0000或特定重映射地址)读取前两个 32 位值:- 第一个值: 加载到主堆栈指针(
MSP)。MSP指向主堆栈的顶部地址(通常是 RAM 的末端)。堆栈用于存储函数调用时的局部变量、返回地址、寄存器上下文等。 - 第二个值: 加载到程序计数器(
PC)。这个值指向复位处理函数(Reset Handler)的入口地址。处理器跳转到这个地址开始执行代码。
- 第一个值: 加载到主堆栈指针(
- Cortex-M 内核从向量表(Vector Table)的最开始(地址
-
执行启动文件:
- 处理器跳转到
Reset_Handler函数(通常由编译器/IDE 提供的启动文件startup_stm32fxxxxx.s定义)。 Reset_Handler完成关键的底层初始化工作:- 初始化 .data 段: 将存储在 Flash 中的已初始化全局变量和静态变量的初始值(
RW-data)复制到 RAM 中对应的位置。 - 清零 .bss 段: 将未初始化的全局变量和静态变量(
ZI-data)在 RAM 中对应的区域清零。 - 配置系统时钟: 调用
SystemInit()函数(通常在system_stm32fxxxx.c中)。该函数根据用户配置(通过SystemClock_Config()或直接操作寄存器/库函数)设置 PLL、分频器等,将系统时钟切换到目标频率(如使用 HSE+PLL 得到 72MHz, 168MHz 等)。 - (可选)初始化 FPU(浮点单元): 如果芯片支持且使用了浮点运算。
- 跳转到 main 函数: 完成上述初始化后,
Reset_Handler调用标准 C 入口函数main()。
- 初始化 .data 段: 将存储在 Flash 中的已初始化全局变量和静态变量的初始值(
- 处理器跳转到
-
执行 main() 函数:
- 程序控制权转移到用户编写的
main()函数。 - 在
main()中,开发者通常会进行:- 外设初始化: 使用 STM32 标准外设库(如 SPL)、硬件抽象层库(HAL)或底层寄存器操作,配置和初始化所需的外设(GPIO, UART, SPI, I2C, ADC, TIMER, DMA 等)。设置引脚模式、时钟使能、中断优先级等。
- 中断配置: 配置中断向量表偏移(如果需要重定位),设置中断优先级分组,使能特定的外设中断和全局中断(
__enable_irq())。 - 初始化操作系统(如果使用): 如果应用程序基于 RTOS(如 FreeRTOS, uC/OS),则在此处初始化并启动调度器。
- 程序控制权转移到用户编写的
-
主循环与事件驱动:
main()函数通常包含一个无限循环 (while(1))。- 系统进入前台/后台或事件驱动的运行模式:
- 轮询: 在循环中不断检查外设状态(如按键状态、串口接收标志)。
- 中断服务: 当外部事件(如按键按下、定时器溢出、串口收到数据、ADC 转换完成)发生时,硬件会暂停当前正在执行的任务,跳转到对应的中断服务程序(ISR)。ISR 处理事件(如读取数据、清除标志、发送响应)后返回,程序继续执行被中断的代码。这是 STM32 高效响应实时事件的核心机制。
- RTOS 任务调度: 如果使用了 RTOS,
while(1)可能仅用于启动调度器。之后,RTOS 内核根据优先级、时间片等在多个用户任务(Task)之间进行调度和切换。任务可以主动阻塞(如等待信号量、队列、延时)让出 CPU,或者被更高优先级任务抢占。中断 ISR 通常用于触发任务同步机制(如释放信号量、发送消息)。
-
低功耗模式(可选):
- 在轮询循环或任务空闲时,程序可以主动让 STM32 进入低功耗模式(Sleep, Stop, Standby 等)以节省电能。
- 进入低功耗模式后,内核时钟或整个芯片大部分电路会关闭。
- 特定的中断或事件(如外部中断、RTC 闹钟)可以将芯片从低功耗模式唤醒,恢复正常运行。
-
看门狗(可选):
- 为了防止程序跑飞(死循环或意外卡死),通常会启用独立看门狗或窗口看门狗。
- 程序需要在规定的时间间隔内“喂狗”(重置看门狗计数器)。
- 如果程序异常未能按时喂狗,看门狗超时会产生复位,使系统重新启动。
总结关键流程:
上电/复位->时钟初始化(初始 HSI/LSI)->设置堆栈指针 (MSP)->跳转到复位处理函数 (Reset_Handler)->初始化 .data 段 (复制初始值到 RAM)->清零 .bss 段->配置系统时钟 (SystemInit)->跳转到 main()->初始化外设/中断/RTOS->进入主循环 (while(1))->处理事件 (轮询/中断/任务调度)->(可选)进入低功耗/被唤醒->(持续运行)
调试接口:
在整个流程中,通过 SWD (Serial Wire Debug) 或 JTAG 接口,开发者可以使用调试器(ST-Link, J-Link 等)连接 IDE(Keil, IAR, STM32CubeIDE),实现:
- 下载程序到 Flash。
- 单步/全速运行程序。
- 设置断点。
- 查看/修改变量和寄存器值。
- 分析程序性能。
- 诊断硬件故障。
理解 STM32 的工作流程对于编写稳定、高效、低功耗的嵌入式应用程序至关重要。启动文件、时钟配置、中断管理和主循环结构是构建应用程序的基础框架。
NX CAD软件:数字化工作流程解决方案(CAD工作流程)
NXCAD——数字化工作流程解决方案(CAD工作流程)使用西门子领先的产品设计软件NXCAD加速执行基于工作流程的解决方案。我们在了解行业需求方
2025-02-06 18:15:02
在FPGA上部署5G NR无线通信:MATLAB与Simulink工作流程
电子发烧友网站提供《在FPGA上部署5G NR无线通信:MATLAB与Simulink工作流程.pdf》资料免费下载
资料下载
杨平
2023-09-14 09:42:18
在FPGA上部署5G NR无线通信:MATLAB与Simulink工作流程
电子发烧友网站提供《在FPGA上部署5G NR无线通信:MATLAB与Simulink工作流程.pdf》资料免费下载
资料下载
李鑫
2023-09-13 11:24:38
保存FLASH工作流程写数据流程
STM32F407HAL用FLASH写掉点保存FLASH工作流程写数据流程:Flash解锁——擦除扇区——写数据到指定空间——上锁写保护;读数据
Simulink是什么?Simulink的工作流程是怎样进行的?
Simulink是什么?Simulink有哪些功能?如何去使用Simulink?Simulink的工作流程是怎样进行的?
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机