半小时搞懂STM32面经知识点——系统架构与启动流程

news2024/11/18 10:56:46

1.Cortex-M系统

1.1系统结构

在这里插入图片描述
1.处理器核心: Cortex-M3
2.存储器系统: Flash,SRAM,FSMC等
3.总线接口: 核心通过总线接口与外设设备和存储器进行通信。
总线矩阵:总线矩阵是一种硬件结构,用于连接处理器核心、内存和外设等主要组件。
AHB总线:AHB是一种高性能总线,用于连接处理器核心和高带宽外设,如存储器控制器和DMA(Direct Memory Access)控制器等。AHB总线通过总线矩阵与处理器核心和其他高性能组件进行连接。
APB:APB1和APB2是两种低功耗外设总线,用于连接处理器核心和低带宽外设,如串口通信接口、定时器和I/O控制器等。
== APB2负责 AD,I/O,高级TIM,串口1。
APB1负责 DA,USB,SPI,I2C,CAN,串口2345,普通TIM,PWR==
4.外设接口 :Cortex-M处理器通过外设接口与外部设备进行通信,如通用输入输出(GPIO)、串行通信接口(UART/SPI/I2C)和定时器等。
5.DMA: DMA代表Direct Memory Access(直接内存访问)允许外围设备直接与系统内存进行数据传输,而无需处理器的干预。(具体讲解见DMA一文)
6.中断控制器:(具体讲解见中断一文)
7.电源管理单元: 用于实现低功耗操作。它可以对处理器和外部设备进行动态电源管理,以最小化能量消耗并延长电池寿命。

1.2 STM32F1和F4的区别

内核不同:F1是Cortex-M3内核,F4是Cortex-M4内核;
主频不同:F1主频72MHz,F4主频168MHz;
浮点运算:F1无浮点运算单位,F4有;
功能性能:F4外设比F1丰富且功能更强大,比如GPIO翻转速率、上下拉电阻配置、ADC精度等;
内存大小:F1内部SRAM最大64K,F4有192K(112+64+16)。

1.3启动流程

①Boot引脚设定,寻找初始的地址。 (闪存是0x0800000,系统存储器是0x1FFFF000,SRAM是0x20000000)
在这里插入图片描述
启动模式只决定程序烧录的位置,加载完程序之后会有一个重映射(映射到0x00000000地址位置);
值得注意的是STM32上电复位以后,代码区都是从0x00000000开始的,三种启动模式只是将各自存储空间的地址映射到0x00000000中。
②设置堆栈
定义堆栈大小,分配了相应的空间。
栈顶指针_initial_sp,堆的起始地址heap_base定义。
③跳转到Reset_Handler
Reset_Handler 是复位时的处理函数,该函数首先调用 SystemInit(系统时钟) 完成时钟、调用**HardFault_Handler(异常中断)**中断向量偏移的初始化工作,然后跳转到 __main 函数, __main函数会完成RW、ZI数据段的重定位工作,即将ROM中的RW数据拷贝到RAM中,将ZI段清零,然后跳转到_rt_entry进行Stack和Heap的初始化。
④跳转到真正的main函数继续执行用户的主程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1664940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

libcity笔记:

1 __init__ 2 encode 得到的内容如下: data_feature的内容: 一共有多少个location1【包括pad的一个】最长的时间间隔(秒)最长的距离间隔(千米)多少个useer idpadding 的locationidpad_item的内容 location…

社交媒体数据恢复:飞书

飞书数据恢复过程包括以下几个步骤: 确认数据丢失:首先要确认数据是否真的丢失,有时候可能只是被隐藏或者误操作删除了。 检查回收站:飞书中删除的文件会默认保存在回收站中,用户可以通过进入回收站找到被删除的文件&…

【北京迅为】《iTOP-3588从零搭建ubuntu环境手册》-第5章 安装SSH

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

C++中调用python函数(VS2017+WIN10+Anaconda虚拟环境)

1.利用VS创建C空项目 step1 文件——新建——项目 step2 Visual C—— Windows桌面——Windows桌面向导 step3 选择空项目 step4 源文件——新建项——添加 step5 Visual C——C文件(.cpp) 2.配置环境 Step1. 更换成Release与X64 Step2. 打开项目属性&…

2 GPIO控制

ESP32的GPIO的模式,一共有输入和输出模式两类。其中输入模式:上拉输入、下拉输入、浮空输入、模拟输入;输出模式:输出模式、开漏输出(跟stm32八种输入输出模式有所不同)。库函数中控制引脚的函数如下&#…

20240511,谓词,内建函数对象

拜托铠甲勇士真的帅好不好!!! STL案例2-员工分组 10个员工,指派部门,员工信息(姓名,工资组成,部门:策划,美术,研发),随机…

量子波函数白话解释

关键词:Quantum Wave Function 文章目录 一、说明二、什么是波函数?三 量子波的可视化四、量子波的概率解释 一、说明 在量子力学中,粒子是我们只有在测量它们时才能看到的东西。其中运动模式由满足薛定谔方程的波函数描述。波函数并非量子…

基于Huffman编码的字符串统计及WPL计算

一、问题描述 问题概括: 给定一个字符串或文件,基于Huffman编码方法,实现以下功能: 1.统计每个字符的频率。 2.输出每个字符的Huffman编码。 3.计算并输出WPL(加权路径长度)。 这个问题要求对Huffman编码算…

AppBuilder低代码体验:构建雅思大作文组件

AppBuilder低代码体验:构建雅思大作文组件 ​ 在4月14日,AppBuilder赢来了一次大更新,具体更新内容见:AppBuilder 2024.04.14发版上线公告 。本次更新最大的亮点就是**新增了工作流,低代码制作组件。**具体包括&#x…

[Cmake Qt]找不到文件ui_xx.h的问题?有关Qt工程的问题,看这篇文章就行了。

前言 最近在开发一个组件,但是这个东西是以dll的形式发布的界面库,所以在开发的时候就需要上层调用。 如果你是很懂CMake的话,ui_xx.h的文件目录在 ${CMAKE_CURRENT_BINARY_DIR} 下 然后除了有关这个ui_xx.h,还有一些别的可以简…

付费文章合集第二期

☞☞付费文章合集第一期 感谢大家一年来的陪伴与支持! 对于感兴趣的文章点标题能跳转原文阅读啦~~ 21、Matlab信号处理——基于LSB和DCB音频水印嵌入提取算法 22、CV小目标识别——AITOD数据集(已处理) 23、Matlab信号发生器——三角波、…

OSError: [WinError 1455] 页面文件太小,无法完成操作 的问题

实质问题是报错:caffe2_detectron_ops.dll“ or one of its dependencies 还需要安装一个包: pip install intel-openmp 安装之后顺利测试通过。

设计模式之数据访问对象模式

在Java编程的浩瀚星海中,有一个模式低调却强大,它像是一位默默无闻的超级英雄,支撑起无数应用的数据脊梁——那就是数据访问对象(DAO, Data Access Object)模式!想象一下,如果你能像操纵魔法一样…

三大消息传递机制区别与联系

目录 总结放开头 1、定义区别: EventBus Broadcast Receiver Notification 2、使用区别: EventBus Broadcast Receiver Notification 3、补充通知渠道: 通知渠道重要程度 总结放开头 BroadCast Receiver:属于安卓全局监听机制,接收…

Linux下安装mysql8.0(以rpm包安装)

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访! Linux下安装mysql8.0(以rpm包安装)https://myweb.myskillstree.cn/125.html 目录 1、查操作系统信息 2、下载mysql 8.0.34的rpm包 …

JWT深入浅出

文章目录 JWT深入浅出1.JWT是什么2.为什么选JWT2.1 传统Session认证2.2 JWT认证 3.JWT怎么用4. jwt绝对安全吗? JWT深入浅出 1.JWT是什么 JWT(JSON Web Token)是一种用于在网络应用间传递信息的开放标准,通常用于身份认证和非敏…

LagentAgentLego智能体工具使用

1. lagent 参考文档 https://github.com/InternLM/Tutorial/blob/camp2/agent/lagent.md 使用 LMDeploy 部署 conda activate agent lmdeploy serve api_server /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b \--server-name 127.0.0.1 \--model-name in…

WebSocket前后端建立以及使用

1、什么是WebSocket WebSocket 是一种在 Web 应用程序中实现双向通信的协议。它提供了一种持久化的连接,允许服务器主动向客户端推送数据,同时也允许客户端向服务器发送数据,实现了实时的双向通信。 这部分直接说你可能听不懂;我…

线路和绕组中的波过程(三)

本篇为本科课程《高电压工程基础》的笔记。 本篇为这一单元的第三篇笔记。上一篇传送门。 冲击电晕对线路上波过程的影响 实际中的导线存在电阻,而且还有对地电导,会消耗一部分能量。但是因为雷击所涉及的传输距离很短,所以几乎可以忽略这…