历史上的今天
今天是:2025年07月13日(星期日)
2019年07月13日 | AVRWARE++开发笔记11:将数组存于ROM中
2019-07-13 来源:eefocus
本日志介绍在AtmelStudio中,将数组存于ROM中的方法。
如果我们不加任何附加声明定义数组或其它变量,在AtmelStudio中(实际上不仅是AtmelStudio,其它GCC采用同样的处理方法),数组或变量是定义在RAM中的。但是单片机中的RAM的容量是比较小的,如果我们有较大的数据(例如数组)需要存储,我们就需要把其定义在ROM中。在Keil、IAR等软件中,都有专门的关键字用于对这些变量和数组进行定义。在这里,我们将介绍AtmelStudio中的定义方法。
在AtmelStudio中,希望把数组或变量定义在ROM中,需包含pgmspace.h头文件,具体的程序写法如下:
#include 然后在程序中定义数据类型,程序如下。这段程序实际上是在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中了。
史海拾趣
|
CPU是PXA270 ,我的BSP中 只是定义了 IRQ_SSP 这个标识, OEMInterruptHandler 相关地方没看到 IRQ_SSP有关的初始化和使能函数, 如果我要使用 IRQ_SSP 这个中断, 要做如何工作? 谢谢指导~… 查看全部问答> |
|
大家好: 我使用西门子TC35模块短信猫用超级终端连接显示已经连接(AT返回OK), 执行(AT+CREG?返回0,3)网络注册拒绝的意思,我换过3张卡均是此问题, 但可以读出手机卡上的短信。 请问用过此设备的同志们如何能注册到网 ...… 查看全部问答> |
|
Platform Builder 5.0:请教高人,键盘消息 我的image做好,下载到目标板,为啥一旦焦点在输入框,就自动弹出软键盘,不停的显示输入3,哪位大虾遇到过,请指教。谢谢… 查看全部问答> |
|
很多网友跟我沟通,提到我上次博文中的protel99se中做拼板图解过于简略,应大家的有求,重新修改了操作图示。 首先打开PCB文档。如图所示:电路板的原点并没有在边上,为了操作方便和规范,先把有点设置到板框的边上。 操作如下现在下方的 ...… 查看全部问答> |
|
今年7月初,国内首家专业安防电子商务公司深圳宇通的电商平台“安防人商城”小范围的启动了招商,在一个月左右时间成功招入几十家安防品牌成为其首期合作供应商。据了解,目前电子商城平台进入最后测试阶段,其官方也宣布将于8月19日正式上线,安防 ...… 查看全部问答> |
|
大家好,小弟在使用XMEGA C系列单片机的SPI时,STATUS寄存器中的IF一直不置位(SPI工作在主模式),串行传输一直未完成,导致下面代码中的while循环一直出不来。 通过调试,工作模式、片选信号都没问题。 不知道有什么原因会导致SPI STATUS寄存 ...… 查看全部问答> |




