首页 > 其他分享 >将stm32 flash和栈相结合,将栈底位置设置成flash地址,可不可以?

将stm32 flash和栈相结合,将栈底位置设置成flash地址,可不可以?

时间:2023-06-07 13:37:39浏览次数:40  
标签:flash Flash 存储器 栈底 stm32 地址 设置

 

 

在使用stm32产生了一个疑问,可不可以将栈底位置设置成flash的某个具体位置,这样就可以将参数写入读取,于是便探寻可行性。

 

在STM32中,Flash存储器用于存放程序代码,而栈通常用于存放临时数据和变量。根据STM32架构设计,Flash和SRAM两者之间是相互独立的,Flash的写入和读取速度相对较慢,因此不适合作为临时数据存储区域。

在将栈底位置设置成Flash地址时,可能会引起一些问题和不可预期的情况。因为栈底指针一般是在程序运行时动态变化的,如果将栈底位置设置成Flash地址,可能会导致覆盖程序代码,从而引起程序运行失常。

另外,即使将栈底位置设置成Flash地址,在访问Flash存储器时也要遵循Flash的写入和读取规则,即先进行擦除操作再进行写入操作,而且每个Flash存储器块只能擦除一次。因此,如果将栈底位置设置成Flash地址,会增加擦除Flash的次数,导致Flash的使用寿命缩短。

因此,不建议将栈底位置设置成Flash地址。在STM32中,可以使用SRAM作为栈底存储器区域,也可以使用另外的存储器作为自定义存储区域,来存放临时数据和变量。

 

标签:flash,Flash,存储器,栈底,stm32,地址,设置
From: https://www.cnblogs.com/Bingley-Z/p/17463046.html

相关文章

  • stm32永久保存一些参数
     如果需要在程序中永久保存一些参数,可以利用STM32的Flash存储器作为自定义存储器区域。在保存参数时,可以将参数按照一定的编码格式打包成一个字节数组(例如采用结构体表示),然后按照一定的规则写入Flash存储器。1、定义参数结构体定义一个结构体存放要保存的参数。例如,假设要保存......
  • stm32 adc采样滤波算法
     1、简单移动平均滤波算法(SMA):采样数据作为滤波器的输入,输出为移动平均值,即取最近一段采样值的平均值作为输出。简单移动平均滤波算法实现简单,计算速度快,但只适用于信号变化缓慢的场合。//简单移动平均滤波算法#defineN10//采样点数floatFilter_Arr[N];//保存过去N个......
  • STM32F429 Discovery开发板应用:实现SPI-SD Card文件写入(搭载FatFS文件系统)
    MCU:STM32F429ZIT6开发环境:STM32CubeMX+MDK5 外购了一个SPI接口的SDCard模块,想要实现SD卡存储数据的功能。首先需要打开STM32CubeMX工具。输入开发板MCU对应型号,找到开发板对应封装的MCU型号,双击打开(图中第三)。 此时,双击完后会关闭此界面,然后打开一个新界面。 ......
  • STM32CubeIDE 使用Ymodem协议通过串口在线更新程序IAP
    一:单片机的BootLoaderBootloader部分移植ST官网的例程,官网例程的IAP有多个文件,为了移植方便我把多个文件合成了一个ymodem.c文件和ymodem.h文件 /**ymodem.c**Createdon:Jun6,2023*Author:MingYi-LZQ*/#include"main.h"#include"ymodem.h"/*......
  • 野火STM32第35章 SDIO读写测试 实验过程犯的错误:卡在while(SD_GetStatus() != SD_TRAN
    看完书,我自己重新写了一遍代码。写代码过程中,对DMA以下标绿的部分很不以为意。1voidSD_DMA_TxConfig(uint32_t*DMA_Tx_Buf,uint32_tBufferSize)2{3DMA_InitTypeDefDMA_InitStruct;45/*ClockEnable-----InGPIOConfig*/67/*Flag......
  • 明解STM32—GPIO应用设计篇之IO外部中断EXTI原理及使用方法
    一、前言        在之前针对STM32的GPIO相关API函数及配置使用进行了详细的介绍,GPIO作为输入引脚时,调用相关读信号引脚函数接口就可以在程序的循环中,轮询的对输入信号进行读取检测操作,除了轮询的方式访问输入引脚,还可以通过另外一种叫做外部中断的方式来对引脚的输入信号进......
  • STM32F429 Discovery开发板应用:实现USB虚拟串口(VPC)
    MCU:STM32F429ZIT6开发环境:STM32CubeMX+MDK5 实现USB的虚拟串口不需要去理解USB的底层驱动,只需要STM32CubeMX去配置生成工程即可。首先需要打开STM32CubeMX工具。输入开发板MCU对应型号,找到开发板对应封装的MCU型号,双击打开(图中第三)。 此时,双击完后会关闭此界面,然后打......
  • 野火指南者(STM32F103VET6)应用:实现USB虚拟串口(CDC_VPC)
    MCU:STM32F103VET6开发环境:STM32CubeMX+MDK5 实现USB的虚拟串口不需要去理解USB的底层驱动,只需要STM32CubeMX去配置生成工程即可。在野火的指南者中,是没有这一类的视频和示例的,博主使用这款开发板实现USB虚拟串口。首先需要打开STM32CubeMX工具。输入开发板MCU对应型号,找到......
  • stm32开发环境搭建 mdk5 keil 【未完成】
    百度网盘:https://pan.baidu.com/s/1WH3l3_ICLf1w5FMhKeAWaA提取码:7pxa带stm32f4和stm32f1的支持包 破解安装支持包更换汉化包,打开文件所在位置-替换uv4文件更换global——def文件替换主题风格安装astle格式化工具  打开注册机 软件安装——Keil的安装与配置......
  • 手把手实践丨基于STM32+NBIOT+华为云IOT设计智能井盖
    摘要:本文介绍基于STM32微控制器、BC26NBIOT模组和华为云IOT平台,实现了一款智能井盖系统。本文分享自华为云社区《基于STM32+NBIOT+华为云IOT设计的智能井盖》,作者:DS小龙哥。一、概述智能井盖是一种通过物联网技术实现对井盖状态监测和管理的设备。当前介绍基于STM32微控制器,B......