AVRWARE++开发笔记11:将数组存于ROM中
阅读量:2041 次
发布时间:2019-04-28
本文共 681 字,大约阅读时间需要 2 分钟。
本日志介绍在AtmelStudio中,将数组存于ROM中的方法。 如果我们不加任何附加声明定义数组或其它变量,在 AtmelStudio中(实际上不仅是 AtmelStudio,其它GCC采用同样的处理方法 ),数组或变量是定义在RAM中的。但是单片机中的RAM的容量是比较小的,如果我们有较大的数据(例如数组)需要存储,我们就需要把其定义在ROM中。在Keil、IAR等软件中,都有专门的关键字用于对这些变量和数组进行定义。在这里,我们将介绍AtmelStudio中的定义方法。 在 AtmelStudio中,希望把数组或变量定义在ROM中,需包含 pgmspace.h头文件,具体的程序写法如下: #include <avr/pgmspace.h> 然后在程序中定义数据类型,程序如下。这段程序实际上是在 pgmspace.h头文件中定义的,但其有条件编译的限制,还需仔细看懂其条件编译的使用条件,要不就自己定义就好了。 typedef unsigned char PROGMEM prog_uchar; 有了 prog_uchar数据类型,我们就可以声明数组了,声明程序如下。数组中的内容将存于ROM中。 const prog_uchar Zk_ASCII8X16[]={} 最后,就是调用方法,其程序如下。我们要用 pgm_read_byte函数进行调用。 ywbuf[j]=pgm_read_byte(&Zk_ASCII8X16[ulOffset+j]); 就这么多内容,学会后,就可以将数据存于ROM中了。 原创性文章,转载请注明出处 。 CSDN:
你可能感兴趣的文章
被废弃的dispatch_get_current_queue
查看>>
有道词典for mac在Mac OS X 10.9不能取词
查看>>
利用jekyll在github中搭建博客
查看>>
How will the new iPhone screen sizes affect iOS developers?
查看>>
【移动开发】Ken Burns特效的幻灯片
查看>>
iOS 8中CLLocationManager及MKMapView showUserLocation失败的解决办法
查看>>
Cocos2d-x 地图行走的实现1:图论与Dijkstra算法
查看>>
Windows7中IIS简单安装与配置(详细图解)
查看>>
BlockQueue 生产消费 不需要判断阻塞唤醒条件
查看>>
ExecutorService 线程池 newFixedThreadPool newSingleThreadExecutor newCachedThreadPool
查看>>