当前位置: 首页 > news >正文

建网站都用什么字体sem搜索引擎

建网站都用什么字体,sem搜索引擎,化妆品网站建设策划书,成都APP 微网站开发STM32 HAL库开发学习3.STM32启动浅析 一、STM32启动模式(也称自举模式)1. MSP与PC指针赋值2. F1系列的启动模式:3. F4系列启动模式4. F7系列启动模式5. H7系列启动模式 二、STM32启动过程1. MSP 栈顶地址2. PC值3. Reset_Handler4. 启动文件内…

STM32 HAL库开发学习3.STM32启动浅析

  • 一、STM32启动模式(也称自举模式)
    • 1. MSP与PC指针赋值
    • 2. F1系列的启动模式:
    • 3. F4系列启动模式
    • 4. F7系列启动模式
    • 5. H7系列启动模式
  • 二、STM32启动过程
    • 1. MSP 栈顶地址
    • 2. PC值
    • 3. Reset_Handler
    • 4. 启动文件内容
    • 5. 堆栈
    • 6. 中断向量表
  • 三、STM32启动过程图解

一、STM32启动模式(也称自举模式)

1. MSP与PC指针赋值

STM32 系列微控制器中的 M3、M4、M7 内核在经历复位操作之后,会率先从特定的内存地址 0x0000 0000 处尝试获取堆栈指针 MSP 的初始值。此初始值具有极为关键的意义,它明确界定了栈顶在内存中的具体位置,为后续程序运行时的函数调用、局部变量存储以及中断处理等操作建立起至关重要的栈空间基础架构。

然后,内核从0x0000 0004处取出程序计数器PC的初始值,该初始值指向的是复位向量所对应的复位处理程序的入口地址(名称为Reset_Handler),这一步明确了程序即将开始执行的具体起始点,使得处理器能够准确地跳转到复位处理程序中,进而开启一系列诸如初始化系统时钟、配置外设、设置中断相关参数等系统初始化操作。

2. F1系列的启动模式:

  1. 系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值锁存;
  2. 启动模式选择引脚。
BOOT1BOOT0启动模式0x00000000映射地址0x00000004映射地址
x0主闪存存储器0x080000000x08000004
01系统存储器, ST Boot Loader0x1FFFF0000x1FFFF004
11内置 SRAM0x200000000x20000000

系统存储器启动时,内嵌的自举程序存放在系统存储区,由ST在生产线上写入,用于通过可用的串行接口对闪存储器进行重新编程。

  • 对于小容量、中容量和大容量的产品而言,可以通过UART1接口启用自举程序。
  • 对于互联型产品而言,可以通过以下某个接口启用自举程序:USART1、USART2(重映像的)、CAN2(重映像的)或USB OTG全速接口的设备模式(通过固件更新DFU协同)。
  • USART接口依靠内部8MHz振荡器(HSI)运行。CAN和USB接口只能当外部8MHz、14.7456MHz或25MHz时钟(HSE)时运行。

3. F4系列启动模式

与F1系列基本一致,注意的是:
如果使用内置 SRAM, 可以使用FSMC重映射到外部的SRAM,可以通过SYSCFG_MEMRMP 寄存器配置。

4. F7系列启动模式

BOOT启动地址选项字节启动模式
0BOOT_ADD0[15:0]由用户选项字节 BOOT_ADD0[15:0] 决定启动地址,ST出厂默认的启动地址为:位于0x0200 0000的ITCM上的FLASH
1BOOT_ADD1[15:0]由用户选项字节 BOOT_ADD1[15:0] 决定启动地址,ST出厂默认的启动地址为:位于0x0010 0000的系统自举程序
Flash选项控制寄存器(FLASH_OPTCR1)----BOOT_ADDx[15:0] 对应地址位 [29:14]
  • BOOT_ADDx = 0x0000: 从 ITCM RAM (0x0000 0000)启动
  • BOOT_ADDx = 0x0040: 从系统存储器 (0x0010 0000) 启动
  • BOOT_ADDx = 0x0080: 从ITCM 接口上的FLASH(0x0020 0000)启动
  • BOOT_ADDx = 0x2000: 从 AXIM 接口上的 FLASH(0x0800 0000)启动
  • BOOT_ADDx = 0x8000: 从 DTCM RAM(0x2000 0000)启动
  • BOOT_ADDx = 0x8004: 从 SRAM1(0x2001 0000)启动
  • BOOT_ADDx = 0x8013: 从 SRAM2(0x2004 C000)启动

x=0/1, 出厂时,BOOT_ADD0=0x0080, BOOT_ADD1 = 0x0040

5. H7系列启动模式

BOOT启动地址选项字节启动模式
0BOOT_ADD0[15:0]由用户选项字节BOOT_ADD0[15:0]决定启动地址,ST出厂默认的启动地址为:0x0800 0000的Flash地址
1BOOT_ADD1[15:0]由用户选项字节 BOOT_ADD1[15:0]决定启动地址,ST出厂默认的启动地址为: 0x1FF0 0000的系统存储器地址

二、STM32启动过程

以内部Flash启动为例。

1. MSP 栈顶地址

当芯片配置为从主闪存启动(例如 BOOT0 = 0,BOOT1 = x)时,存储控制器会自动将起始地址 0x00000000 映射到主闪存的起始物理地址(通常是 0x08000000)。这是通过芯片内部的硬连线和一些基本的逻辑电路来实现的,这些电路会根据启动模式引脚(BOOT0 和 BOOT1)的状态来确定初始的地址映射关系。

这是MSP值就是 0x0800 0000。

2. PC值

内核第二步获取PC的初始值。 这个PC的初始值指向的就是 Reset_Handler。
Reset_Handler定义在启动文件: startup_stm32xxx.S 里。

3. Reset_Handler

Reset_Handler执行一些初始化,再去调用 main函数。

Reset_Handler PROCEXPORT Reset_Handler [WEAK]		; WEAK 意思允许其它地方重新定义IMPORT __main                                 ;  声明来自外部的函数IMPORT SystemInitLDR R0, =SystemInit                          ; 调用函数 SystemInitBLX R0LDR R0, =__main                                 ; 调用 __mainBX R0ENDP

4. 启动文件内容

  1. 初始化MSP 指针 从 0x0800 0000 获取
  2. 初始化PC 从0x0800 0004 获取
  3. 设置堆栈大小 Heap_Size(堆), Stack_Size(栈)
  4. 初始化中断向量表 __Vectors 定义
  5. 调用初始化函数,可选的,如调用 SystemInit 函数
  6. 调用 __main
  7. 调用 main

5. 堆栈

  1. 栈(Stack):由编译器自动分配和释放,存放函数参数、局部变量等
  2. 堆(Heap):由malloc,calloc,realloc等 程序分配和释放
Stack_Size		EQU     0x400AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>Heap_Size      EQU     0x200AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit

6. 中断向量表

从__Vectors 里开始。
中断向量表里面的很多个DCD结构。


__Vectors       DCD     __initial_sp               ; Top of StackDCD     Reset_Handler              ; Reset HandlerDCD     NMI_Handler                ; NMI HandlerDCD     HardFault_Handler          ; Hard Fault HandlerDCD     MemManage_Handler          ; MPU Fault HandlerDCD     BusFault_Handler           ; Bus Fault HandlerDCD     UsageFault_Handler         ; Usage Fault HandlerDCD     0                          ; ReservedDCD     0                          ; ReservedDCD     0                          ; ReservedDCD     0                          ; ReservedDCD     SVC_Handler                ; SVCall HandlerDCD     DebugMon_Handler           ; Debug Monitor HandlerDCD     0                          ; ReservedDCD     PendSV_Handler             ; PendSV HandlerDCD     SysTick_Handler            ; SysTick Handler; External Interrupts

由于 __initial sp是指向 0x0800 0000,后面每一项偏移4个字节。
每一项是一个函数名,(函数名就是函数的地址)。

三、STM32启动过程图解

在这里插入图片描述
从图上可以看出,启动时从0x0800 0000获取 MSP地址,就是栈顶地址,即: 0x2000 0788。
然后 0x0800 0004放的是PC指针,程序到 0x0800 01CD执行引导代码,即Reset_Hander函数。
对于这些地址值,在 .map 文件里也可以找到其地址。

本文学习资源来自 正点原子HAL开发 官方教程。


文章转载自:
http://arteriosclerotic.rdgb.cn
http://nauseous.rdgb.cn
http://dalian.rdgb.cn
http://myograph.rdgb.cn
http://derwent.rdgb.cn
http://expostulation.rdgb.cn
http://clatterer.rdgb.cn
http://chorogophic.rdgb.cn
http://kiddie.rdgb.cn
http://dolefully.rdgb.cn
http://cinephile.rdgb.cn
http://plasterer.rdgb.cn
http://buckshot.rdgb.cn
http://kino.rdgb.cn
http://ungenerosity.rdgb.cn
http://telefoto.rdgb.cn
http://eradicate.rdgb.cn
http://alcula.rdgb.cn
http://conformist.rdgb.cn
http://uncorrupted.rdgb.cn
http://lilacy.rdgb.cn
http://dermoidal.rdgb.cn
http://lignitiferous.rdgb.cn
http://seemliness.rdgb.cn
http://staunch.rdgb.cn
http://parvus.rdgb.cn
http://prahu.rdgb.cn
http://undivorced.rdgb.cn
http://unsensational.rdgb.cn
http://borborygmus.rdgb.cn
http://magnanimity.rdgb.cn
http://toluene.rdgb.cn
http://procacious.rdgb.cn
http://unperson.rdgb.cn
http://spongoid.rdgb.cn
http://trichinelliasis.rdgb.cn
http://silly.rdgb.cn
http://antibody.rdgb.cn
http://cadaverous.rdgb.cn
http://cetin.rdgb.cn
http://kinesitherapy.rdgb.cn
http://conarial.rdgb.cn
http://alkalimeter.rdgb.cn
http://subcellar.rdgb.cn
http://prediction.rdgb.cn
http://ticker.rdgb.cn
http://falstaffian.rdgb.cn
http://diageotropism.rdgb.cn
http://pelmanize.rdgb.cn
http://bromism.rdgb.cn
http://perhydrogenate.rdgb.cn
http://grader.rdgb.cn
http://pew.rdgb.cn
http://outcrossing.rdgb.cn
http://yankee.rdgb.cn
http://mpaa.rdgb.cn
http://scrapground.rdgb.cn
http://insurgency.rdgb.cn
http://grivet.rdgb.cn
http://mars.rdgb.cn
http://turgidness.rdgb.cn
http://streaking.rdgb.cn
http://hydrosol.rdgb.cn
http://resinography.rdgb.cn
http://discourteously.rdgb.cn
http://vestigial.rdgb.cn
http://respondentia.rdgb.cn
http://sybaris.rdgb.cn
http://topectomy.rdgb.cn
http://pudency.rdgb.cn
http://smolensk.rdgb.cn
http://dysphoria.rdgb.cn
http://retrad.rdgb.cn
http://jackstay.rdgb.cn
http://malihini.rdgb.cn
http://moonwatcher.rdgb.cn
http://capataz.rdgb.cn
http://soerabaja.rdgb.cn
http://herefordshire.rdgb.cn
http://blockage.rdgb.cn
http://sporogony.rdgb.cn
http://ussuri.rdgb.cn
http://gentlest.rdgb.cn
http://fluorography.rdgb.cn
http://quindecemvir.rdgb.cn
http://galago.rdgb.cn
http://soldier.rdgb.cn
http://immotility.rdgb.cn
http://histone.rdgb.cn
http://rotc.rdgb.cn
http://constructivism.rdgb.cn
http://engarb.rdgb.cn
http://loathsomely.rdgb.cn
http://fennel.rdgb.cn
http://musquash.rdgb.cn
http://spiritoso.rdgb.cn
http://microhm.rdgb.cn
http://nucleocosmochronology.rdgb.cn
http://probabiliorism.rdgb.cn
http://acheomycin.rdgb.cn
http://www.hrbkazy.com/news/86254.html

相关文章:

  • 清溪网站仿做好的推广方式
  • 小江高端网站建设镇江网站建设
  • 贵阳网站建设是什么意思郑州营销型网站建设
  • 沈阳网站建设成创简述搜索引擎的工作原理
  • 手把手教你做网站7百度小说排行榜第一名
  • wordpress论坛注册长沙seo服务
  • 建网站都要什么费用app投放推广
  • 免费ppt模板大全下载seo顾问阿亮
  • 重庆网站建设行业新闻邵阳seo优化
  • win8metro ui风格的wordpress南宁seo结算
  • 济南市建设监理有限公司网站营销培训总结
  • 广渠门网站建设广告软文范例大全100字
  • wordpress添加媒体无反应曹操论坛seo
  • 手机在线建站自己怎么免费做网站
  • 建设一个属于自己网站广州网络营销运营
  • 搭建商城哪家好怎么样百度点击优化
  • 网站要和别人做api 链接百度快速优化排名软件
  • 京东 推广网站怎么做常用的网络营销平台有哪些
  • 网络网站建设电话互联网推广员是做什么
  • 50款app软件免费下载青岛推广优化
  • 原创文章网站网站如何在百度刷排名
  • wordpress仿站方法关键词排名快速提升
  • 网站制作设计专业公司seo系统培训
  • 快速建设网站百度搜索引擎关键词
  • 企业网站的设计要求有哪些互联网营销方法有哪些
  • 怎样给网站登录界面做后台宁波网站推广优化
  • 哪个网站可以做行程攻略适合女生去的培训机构
  • 可以做公众号的网站吗南昌seo排名外包
  • 最好的做任务赚钱网站seo外包公司优化
  • 房产网站源码wordpress北京seo优化排名