Advertisement

STM32 SRAM启动的Keil配置

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本文章详细介绍如何在Keil开发环境中为基于STM32系列微控制器设置SRAM作为启动内存的步骤和注意事项。适合嵌入式开发者参考学习。 为了使STM32微控制器从SRAM启动而不是默认的Flash存储器启动,在硬件层面需要将BOOT0引脚设置为高电平(即1),同时保持BOOT1同样为高电平,这样设备会在上电或复位时直接进入SRAM模式并执行其中的第一条指令。 在软件配置方面,如果使用的是STMicroelectronics提供的标准库函数版本3.5及以上,则可以在`system_stm32f10x.c`文件中进行相应的设置。在这个文件里定义了宏`#define VECT_TAB_SRAM 2.x`,这指示中断向量表的位置被设定在SRAM区域。 对于动态切换中断向量表的地址位置,可以使用STM32微控制器内置的Nested Vectored Interrupt Controller (NVIC) 提供的功能。以下两个函数分别用于将IVT设置为Flash或SRAM起始地址: 1. `NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00);` 将中断向量表的位置设在Flash存储器的开始位置,即0x00000000。这是默认配置,在从Flash启动时使用。 2. `NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x2000000);` 将中断向量表的位置设在SRAM起始地址处,即地址为内存映射的开始位置(通常是0x2000000)。当从SRAM启动时需要调用此函数。 使用Keil MDK IDE配置STM32工程以支持SRAM启动的过程如下: 1. 打开项目属性对话框。 2. 在Target选项卡中,找到“Startup”类别,并将“Vector Location”的设置更改为Internal RAM。这指示编译器生成的中断向量表应位于SRAM区域而非Flash存储区。 3. 确保Code Location被正确配置为Internal FLASH, 以保证程序代码依然存放在Flash中,因为启动时需要加载到SRAM中的只是初始化数据和运行所需的少量代码片段而已。 完成上述设置后,Keil将生成一个适合从SRAM启动的映像文件。当编译并下载该映像至STM32设备上之后,在BOOT引脚配置正确的情况下,微控制器将会在复位时直接进入SRAM模式,并执行存储于其中的程序代码。 值得注意的是,由于SRAM本身不包含任何初始化信息,从SRAM启动的应用需要在其启动函数(例如`SystemInit()`)中自行加载Flash中的初始设置到内存并进行必要的跳转操作。这样可以确保在运行期间能够顺利访问和利用Flash中的完整应用程序库或数据结构。 综上所述,配置STM32微控制器以实现其从SRAM而非默认的Flash启动涉及硬件引脚设定、软件函数调用以及Keil IDE项目设置等多方面的知识和技术细节。这些步骤对于开发人员来说非常重要,能够帮助他们灵活地在不同存储介质之间切换启动方式,并根据具体需求选择最合适的解决方案。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • STM32 SRAMKeil
    优质
    本文章详细介绍如何在Keil开发环境中为基于STM32系列微控制器设置SRAM作为启动内存的步骤和注意事项。适合嵌入式开发者参考学习。 为了使STM32微控制器从SRAM启动而不是默认的Flash存储器启动,在硬件层面需要将BOOT0引脚设置为高电平(即1),同时保持BOOT1同样为高电平,这样设备会在上电或复位时直接进入SRAM模式并执行其中的第一条指令。 在软件配置方面,如果使用的是STMicroelectronics提供的标准库函数版本3.5及以上,则可以在`system_stm32f10x.c`文件中进行相应的设置。在这个文件里定义了宏`#define VECT_TAB_SRAM 2.x`,这指示中断向量表的位置被设定在SRAM区域。 对于动态切换中断向量表的地址位置,可以使用STM32微控制器内置的Nested Vectored Interrupt Controller (NVIC) 提供的功能。以下两个函数分别用于将IVT设置为Flash或SRAM起始地址: 1. `NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00);` 将中断向量表的位置设在Flash存储器的开始位置,即0x00000000。这是默认配置,在从Flash启动时使用。 2. `NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x2000000);` 将中断向量表的位置设在SRAM起始地址处,即地址为内存映射的开始位置(通常是0x2000000)。当从SRAM启动时需要调用此函数。 使用Keil MDK IDE配置STM32工程以支持SRAM启动的过程如下: 1. 打开项目属性对话框。 2. 在Target选项卡中,找到“Startup”类别,并将“Vector Location”的设置更改为Internal RAM。这指示编译器生成的中断向量表应位于SRAM区域而非Flash存储区。 3. 确保Code Location被正确配置为Internal FLASH, 以保证程序代码依然存放在Flash中,因为启动时需要加载到SRAM中的只是初始化数据和运行所需的少量代码片段而已。 完成上述设置后,Keil将生成一个适合从SRAM启动的映像文件。当编译并下载该映像至STM32设备上之后,在BOOT引脚配置正确的情况下,微控制器将会在复位时直接进入SRAM模式,并执行存储于其中的程序代码。 值得注意的是,由于SRAM本身不包含任何初始化信息,从SRAM启动的应用需要在其启动函数(例如`SystemInit()`)中自行加载Flash中的初始设置到内存并进行必要的跳转操作。这样可以确保在运行期间能够顺利访问和利用Flash中的完整应用程序库或数据结构。 综上所述,配置STM32微控制器以实现其从SRAM而非默认的Flash启动涉及硬件引脚设定、软件函数调用以及Keil IDE项目设置等多方面的知识和技术细节。这些步骤对于开发人员来说非常重要,能够帮助他们灵活地在不同存储介质之间切换启动方式,并根据具体需求选择最合适的解决方案。
  • STM32文件
    优质
    STM32启动配置文件是用于定义和配置STM32微控制器在系统启动时所需参数和设置的重要文件。它包含了片上外设初始化、中断向量表等关键信息,对确保系统的稳定运行至关重要。 STM32启动文件包括:startup_stm32f10x_ld.s、startup_stm32f10x_md.s 和 startup_stm32f10x_hd.s。其中,ld适用于小容量产品;md适用于中等容量产品;hd 适用于大容量产品。这里的“容量”指的是FLASH的大小:小容量指FLASH≤32K;中容量指64K≤FLASH≤128K;大容量则为256K≤FLASH。
  • STM32 Keil MDK代码分析
    优质
    本文章深入解析了基于STM32微控制器使用Keil MDK开发环境时的启动代码工作原理和实现细节,旨在帮助开发者更好地理解和利用嵌入式系统编程中的关键步骤。 这段代码是用于ARM处理器的汇编语言程序的一部分,主要用于实现复位处理函数(Reset_Handler)。下面是对你提到的两个概念的具体解释: 一:PROC 和 ENDP 是 ARM 汇编中定义子过程或子例程的关键字。 - `PROC` 用来标记一个新过程或者子程序开始; - `ENDP` 标记该过程结束。 二:[WEAK] 关键词表示在链接阶段如果存在同名的其他函数,那么这个特定声明为弱类型的函数会被忽略。也就是说,在定义 Reset_Handler 这个标号时加上 [weak] 选项意味着如果有别的文件中同样定义了 Reset_Handler,则编译器会使用那个版本而不是这里的。 具体代码解释如下: ```assembly Reset_Handler PROC ; 定义一个名为 Reset_Handler 的过程开始 EXPORT Reset_Handler [WEAK]; 导出该标号,同时声明它为弱类型(即可以被其他定义覆盖) IMPORT __main; 从外部导入 __main 函数地址 LDR R0, =__main ; 将 _main 地址加载到寄存器R0 BX R0 ; 跳转至R0所指向的地址,开始执行C程序入口函数 ENDP ; 结束过程定义 ``` 这段代码的主要功能是设置系统复位时调用 C 语言运行库中的初始化函数(__main),从而启动应用程序。
  • KEILProteus驱
    优质
    本教程详细介绍如何在Keil开发环境中配置Proteus仿真软件的驱动程序,适用于单片机等嵌入式系统的设计与调试。 在Keil下使用Proteus进行驱动开发,并实现Keil与Proteus的互联。
  • STM32Keil MDK中J-Link说明
    优质
    本篇文章详细介绍了如何在使用Keil MDK开发环境中配置J-Link调试器与STM32微控制器进行连接和调试的方法。 本段落介绍了两种下载调试程序的配置方法,并提供了详细的步骤说明及图片示例。
  • Flutter 白屏页设/画面
    优质
    本教程详解如何在使用Flutter开发的应用中设置白屏启动页,包括配置步骤和代码示例,帮助开发者实现自定义启动画面。 新建Flutter项目后,在启动时会有一段时间的白屏。这是系统开机默认显示的画面,但你可以将其替换为自定义的启动画面。具体设置如下: 1. 在`launch_background.xml`文件中将图片名称修改为你自己的图片名称。这里的src表示图片的名字不带扩展名,mipmap则对应不同分辨率下的图片。 2. `styles.xml` 文件中的配置:通过将windowFullscreen设为true,并在属性中指定@mipmap/launcher来实现全屏显示启动图。这样设置后,应用会有一个顶部状态栏和你的自定义启动画面。
  • ZYNQQSPIBOOT.bin
    优质
    本篇文章主要讲解如何在ZYNQ平台上通过QSPI接口进行BOOT.bin的启动配置,适用于需要深入理解ZYNQ引导过程的技术人员。 本段落主要讨论用于Zynq引导启动的QSPI启动方式,并提供相关附件以供参考。该文章详细介绍了如何配置和使用QSPI进行Zynq芯片的快速高效启动,为读者提供了实用的技术指导与解决方案。
  • HDFView文件
    优质
    HDFView启动文件配置介绍如何设置和优化HDFView软件的初始化参数及环境变量,以提升数据访问效率和用户体验。 hdfview.bat 和 hdfview.sh 用于配置 HDFView 启动时的环境变量。
  • ClickHouse本地
    优质
    简介:本文将详细介绍如何在本地环境中成功安装和配置ClickHouse数据库系统,包括必要的前置条件、下载步骤及详细的配置参数说明。 这是关于本地ClickHouse的启动、关闭以及一系列操作的个人分享。
  • 华为OLT
    优质
    简介:本文将详细介绍华为OLT设备的配置与启动过程,涵盖必要的软件安装、参数设置及故障排查等步骤,帮助读者轻松掌握OLT设备管理技巧。 本段落介绍纯净脚本的自动完成功能以及各种ONT常见故障处理案例及应用。