如何合理的运用stm32的flash内存

发布者:创意航海最新更新时间:2019-09-25 来源: eefocus关键字:stm32  flash内存  存储数据 手机看文章 扫描二维码
随时随地手机看文章

关于stm32的flash操作,网上已经有很多详细的介绍了,这里只是总结一些告诫。


在使用flash存储数据的时候,对于新手来说,并不知道该把数据存在哪一个地址上,怕存到程序区域,或者越界。


关于这一点很容易搞清楚,首先我们需要看我们编译出的程序有多大。


上图可以计算出程序的大小,

bin=Code+RO+RW

17984+440+152=18576 字节


由于stm32的flash是按页计算大小的,所以程序写入时会是19K,或者20K,这个关系到flash大小问题,小容量的一个页是1K,大容量是2K,因为在写入数据时会先擦除该页,如果此时写入的数据在18576-19000K之间,那么18000-18576属于程序段的数据将被擦除,可能导致程序无法运行了。所以此时应该把数据保存在19K后。


如果你的芯片是64K,那么可以用于存数据的地址范围为19k——64K直接,也就是0x08004A38——到0x080010000.


说一下 ZI 数据,这个数据全是0xFF,所以是无效数据,所以在编译时并没有编译到程序中,在运行时才会有内存使用,所以应该也需要留出这个区域的大小供程序运行。

关键字:stm32  flash内存  存储数据 引用地址:如何合理的运用stm32的flash内存

上一篇:一阶互补滤波应用到stm32 ADC采集上
下一篇:stm32模拟输出PPM信号

推荐阅读最新更新时间:2024-11-03 20:52

STM32单片机内存管理器实用代码解析与工程应用指南
本代码适用于无操作系统的STM32单片机开发,功能强大。 可申请到地址空间连续的不同大小的内存空间,且用户接口简单,使用方便。 直接复制粘贴如下代码即可: memory.h: #ifndef __MEMORY_H__ #define __MEMORY_H__ #include stdio.h #include string.h #include includes.h //用户使用 typedef struct { void *addr;//申请到的内存的起始地址 uint32_t size;//申请到的内存的大小,按照块大小分配,大于等于申请大小 uint16_t tb; //申请表序号,申
[单片机]
印刷机张力控制系统设计
简介:基于印刷行业张力控制原理,分析了张力控制系统组成,并介绍了以STM32为主控芯片及外围电路开发而成的闭环张力控制系统,该系统不仅控制精度高,响应速度快,而且操作简单,有合理的PID控制功能,适用于多种印刷材料。它还可以计算出材料筒的直径,使整个张力控制过程更为合理。 张力控制系统广泛应用于印刷等轻工业领域中,在收取和放卷材料时,为保证生产的质量及效率,保持恒定的张力是很重要的。在印刷过程中或者是印刷完成之后,最后的一道工序一般就是将加工物卷绕成筒状。在这一过程中,卷绕的好坏将是决定产品质量的关键,卷得太紧,容易使材料变形、拉断,卷得太松又容易使材料不紧凑,不利于搬运和运输,因而为了达到使卷绕紧凑,保证产品的质量,都要求在
[单片机]
印刷机张力控制系统设计
STM32学习之:定时器中断
定时器中断   STM32 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器。在本章中,我们将利用 TIM3 的定时器中断来控制 DS1 的翻转,在主函数用 DS0 的翻转来提示程序正在运行。选择难度适中的通用定时器来介绍。 1、 STM32 通用定时器简介   STM32 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器(CNT)构成。STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。STM32 的每个通用定时器都是完全独立的,
[单片机]
网络通信之UIP在STM32上的移植
1、什么是UIP协议栈: UIP是一种适用于小型嵌入式通信的TCP/IP协议栈,由瑞典计算机科学院的人开发编写的,它去掉了完整的TCP/IP中不常用的功能,简化了通讯过程,但其保留了网络通信中必须使用的协议,把设计重点放在IP、TCP和ARP协议的实现上。简单易用、占用资源少是它的设计特点。 2、协议栈接口 UIP协议栈通过一系列接口函数与底层函数和上层应用程序通信,在两者之中,UIP接口函数处于中间。 其中UIP提供两个个接口函数给底层系统。分别是 (1)uip_input() 当网卡驱动收到一个输入包时,将放入全局缓冲区uip_buf中,包的大小由全局变量uip_len约束。同时将调用 uip_input() 函数,这个函
[单片机]
网络通信之UIP在<font color='red'>STM32</font>上的移植
基于STM32的便携式人机界面系统
在全站仪应用于飞机的测量过程中,常会涉及到计算,以满足不同的应用环境与测量要求,以往的方式是测量后期编辑软件在计算机上实现,现代测量迫切需要一种便携式手持计算系统,来完成实时的测量要求,而这一系统中中文人机界面成为一种事实上的行业标准。实现显示汉字的TFT液晶和可输入数字的小键盘已成为智能设备必不可少的组成部分。同时作为便携式设备基本要求的低功耗特性也贯穿于中文人机界面的设计始终。这种低功耗中文人机交互界面需要在选取处理器和具体元器件上有特殊考虑。微功耗、高性能应作为选择相关器件的首要要求。本文选用了意法半导体公司基于ARM最新Cortex—M3内核的STM32F103RB作为主控芯片,通过选择合适的液晶模块,构建了一个高性能低
[单片机]
基于<font color='red'>STM32</font>的便携式人机界面系统
采用FPGA与SRAM的大容量数据存储的设计
1 前言  针对FPGA中内部BlockRAM有限的缺点,提出了将FPGA与外部SRAM相结合来改进设计的方法,并给出了部分VHDL程序。    2 硬件设计   这里将主要讨论以Xilinx公司的FPGA(XC2S600E-6fg456)和ISSI公司的SRAM(IS61LV25616AL)为主要器件来完成大容量数据存储的设计思路。   FPGA即现场可编程门阵列,其结构与传统的门阵列相似,大量的可编程逻辑块( CLB , Configurable Logic Block ) 在芯片中央按矩阵排列,芯片四周为可编程输入/输出块( IOB , Input / Output Block),CLB行列之间及CLB和IOB之间具
[工业控制]
STM32在线调试正常,上电运行不正常
贴了两块样板,烧写同样的固件。其中一块工作正常,但是另外一块出现了很奇怪的现象:在线调试正常;每次烧写完后工作正常;重新上电有时候工作正常,有时候工作不正常;工作不正常时,按下复位按键,恢复正常。 工作异常现象:main函数中的系统运行指示灯不闪烁,但是初始化过程中点的一个灯是亮的!说明程序运行一段时间后,不工作了。 由于在线调试模式,板子工作正常,无法通过在线调试的方式判断程序运行的异常状态。 分析可能的原因: 1、初始化过程中,程序陷入死循环。但程序初始化过程中,没有while(1)死循环的代码。 2、板子上电后不断复位,导致无法进入main函数中的while(1)循环。 问题查找: 硬件: 1、确认BOOT0管脚接10k
[单片机]
stm32与sim900之GPRS通信(电脑串口与SIM900通信)
注意: 1 sim900在进行GPRS通信的时候最大电流可以到90MA.瞬间电流SIM900模块可能高达2A@4V,即输入端电流瞬间值可能高达740mA@12V,故给模块选择电源的时候,要能满足瞬间电流峰值。 以上这段话摘录自正点原子的SIM900用户手册,也就是说你在用SIM900这个模块进行GPRS数据传输时,要保证能给这个模块提供2A左右的电流,在实际的测试当中,如果提供的电流过小,会造成GPRS通信偶尔几次通信成功。 2 stm32向SIM900通信的时候,发送的每个AT指令之间是要有时间间隔的,可以先通过电脑串口与SIM900进行通信有一个简单的认识,然后再开始写程序,调试。 3 注意SIM卡安装的方向不要装
[单片机]
<font color='red'>stm32</font>与sim900之GPRS通信(电脑串口与SIM900通信)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved