【Arduino官方教程第零辑】基础部分 2-4 内存
来源:互联网 发布:淘宝宝贝描述低怎么办 编辑:程序博客网 时间:2024/05/20 18:49
内存
本文所列出的数据适用于除了Due之外的所有基于AVR的板子,因为Due的硬件架构与众不同。
基于AVR控制器的Arduino板中有三个内存区块:
Flash(闪存) :用作存储程序
SRAM (静态随机存取存储器):存储变量值的地方
EEPROM(可擦可编程只读存储器) :可以长期存储信息的地方
Flash和EEPROM 是掉电还能够存储信息的存储器。SRAM在掉电后会丢失所有数据。
UNO上的ATmega328芯片有以下内存配置:
Flash
SRAM 2k bytes
EEPROM 1k byte
Mega2560上的ATmega2560芯片有以下内存配置:
请注意,在UNO上没有太多SRAM的空间。如果在程序中使用了过多的字符串,它很容易被占满。
char message[] = "I support the Cape Wind project.";
例如,如上字符串(包括最后的 \0 转义字符)占用了33字节的SRAM空间(每个英文字符是一个byte,每个中文字符为两个byte)
看起来微不足道,但是说不定累积起来很快就会达到2048的极限值,特别是当你有很多字符要发送到显示器上的时候。
如果你用完了SRAM空间,你的程序很可能会出现奇奇怪怪的错误;它看起来正常启动了,但是却无法运行,或者以奇怪的方式运行。为了检查是否这种情况有发生,你可以在不改变功能代码的情况下尝试注释掉一些变量或将字符串删短一些。如果接下来程序就正常运行了,就说明之前你肯定超过了SRAM的最大存储范围。
- 如果你的程序能和电脑这样的计算单元进行通信,那么你可以将一些大型的数据计算发送到电脑端解决。
- 如果你要用很大长度的数组,那么可以换用更小的数据类型。比如,int值要占用两个字节,你可以用byte(只占用一个字节)代替。
- 如果你不需要在程序运行时动态修改字符串内容,你可以使用PROGMEM关键字将它放入Flash中。如果你要使用EEPROM存储区块,请参看EEPROM的库内容。
原文链接
第零辑目录
更新进程
日期 日志 译者 2016年6月27日 创建并翻译文档 唐家勋
译者:唐家勋
邮箱:mrsteventang@gmail.com
QQ:649196486
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
0 0
- 【Arduino官方教程第零辑】基础部分 2-4 内存
- 【Arduino官方教程第零辑】基础部分-目录
- 【Arduino官方教程第零辑】基础部分 2-2 模拟引脚
- 【Arduino官方教程第零辑】基础部分 1-4 工程
- 【Arduino官方教程第零辑】基础部分 2-3 PWM
- 【Arduino官方教程第零辑】基础部分 2-1 数字引脚
- 【Arduino官方教程第零辑】基础部分 1-1 什么是Arduino
- 【Arduino官方教程第零辑】基础部分 1-2 Arduino Uno/Genuino Uno板简介
- 【Arduino官方教程第零辑】基础部分 1-3 Arduino软件(IDE)
- 【Arduino官方教程第一辑】示例程序 4-2 调光器
- 【Arduino官方教程】基础示例(六):读取模拟电压
- 【Arduino官方教程第一辑】示例程序 2-4 数字引脚上拉电阻
- 【Arduino官方教程第一辑】示例程序 2-2 按键
- 【Arduino官方教程第一辑】示例程序 1-2 Arduino工程的最小单元
- 《swift2.0 官方教程中文版》 第2章-01基础部分
- 【Arduino官方教程】基础示例(五):LED亮度渐变(Fade)
- jdbc基础4--翻译sun官方教程
- jdbc基础2--翻译sun官方教程
- 【Arduino官方教程第一辑】示例程序 5-5 Switch和Case条件语句2
- 【Arduino官方教程第一辑】示例程序 5-6 While循环
- 【Arduino官方教程第零辑】基础部分-目录
- 【Arduino官方教程第零辑】基础部分 2-3 PWM
- STM32F4时钟设置分析
- 【Arduino官方教程第零辑】基础部分 2-4 内存
- SpringBoot快速开发(二)
- 项目 Web 的 NuGet 程序包还原失败: 找不到“1.0.0”版本的程序包“Microsoft.Net.Compilers”。。 0
- struts2中的几个技术
- 《招一个靠谱的移动开发》iOS面试题及详解(上篇)
- poj 1463/hdu 1463 Strategic game 【二分匹配/树型dp】
- UTMI及USB 2.0 PHY高速传输特性分析
- MySQL数据类型
- 如何获取闭包中循环的i值