在使用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