如何实现cc2541中文数据手册在复位后,xdata中的数据不丢失

51单片机在Keil环境下,用C语言编程,关于片外存储区xdata中存放结构体类型的数据的问题,替朋友问的。_百度知道
51单片机在Keil环境下,用C语言编程,关于片外存储区xdata中存放结构体类型的数据的问题,替朋友问的。
这个问题是替朋友问的,当然,我也不会,顺便请教,如果有回答的好的,我朋友可以充十块话费,先谢谢各位大神。是这样的,本人以前一直做硬件设计,最近一年才接触单片机的硬件和编程设计,昨天在程序设计中,发现一个怪现象,就是,我程序里定义了一个结构体数据类型,如下定义:typedef struct Calender{ unsigned char M unsigned char H unsigned char D unsigned char M unsigned short Y }CALENDER;CALENDER Calndr1;CALENDER Calndr_T并且声明了两个个变量,Calndr1 和 Calndr_Temp,后来,因为程序不够,我把内存模式修改成Large模式,结果,程序就完全出错了,再后来,我找个高手问了一下,他说,51单片机的结构体数据类型所定义的变量和数组变量,是不可以放在外部RAM里的,至于详细的原因,他说他也不清楚,是经验所得的。他后来只把变量的定义修改如下:data CALENDER Calndr1;data CALENDER Calndr_T程序在Large模式下就可以运行了,我想问问其他前辈,为什么自定义的结构体类型的数据不可以存放在外部存储器XRAM里呢?另外补充的说一下,我用的是STC90C516AD,有4K的外部RAM,是可以用的。百度没分了,能给出详细且正确的解释的,我愿意充十块话费,谢谢!
提问者采纳
Keil本身对STC单片机缺乏支持,对外部xram没有数据库描述。在器件库中选个带xram的单片机就可以了,比如sst89x516rd.
那为什么对于普通数据类型的变量没有问题,而自定义结构体类型的变量就不行呢?
这个只能说是Keil对STC的支持问题,同样式51单片机,用SST的和C805F等带XRAM的就能正常编译通过,结构体是可以放在XRAM中的,不存在你说的上述问题。还有声明结构体方法有问题。typedef struct Calender{........}CALENDER; 后面的这个CALENDER是一个变量,Calender才是变量类型。只有变量类型才能声明其他变量。这两个名称最好有所区别避免混淆。
你没看明白,我是typedef struct xxx{}XXX.这种声明结构体的方法是没有问题的。另外,我这个不是说把结构体类型放到外部RAM会编译报错,编译是不报错的,能够编译通过,只是运行出错。
这个代码我验证过了,没有问题。而且我有很多项目上都在用外部RAM放结构体,不存在你说的问题。你看那,我的结构体包括结构体的数组都定义到XRAM里了,
非常感谢您能为这个问题亲自做实验!如果 struct xxx{}XXX;这样的话,那么,XXX是一个声明的变量typedef struct xxx{}XXX.如果是这样的话,其结构与 typedef是一样的,那个uint是类型的新别名,而不是unsigned short类型的变量。
嘿嘿,这个我弄错了,以我截图为准。你试着找找其他原因。
提问者评价
不管咋地,你能为我这个亲自做实验,我表示衷心的感谢
来自团队:
其他类似问题
为您推荐:
其他2条回答
CALENDER xdata Calndr1;CALENDER xdata Calndr_T这样定义的出错了?虽然没用过这个型号
但是51内核的
这样使用过
没出现过什么问题啊
是的,只要放到xdata里,程序就不对,数据就乱,但是放到data里就没有问题
数据乱了是通过程序运行看出来的
还是仿真查看该地址时 数据是乱的 前者的话就好好检查下程序 看看是否是堆栈溢出了
后者的话有可能就是楼上所说keil的不支持引起的
数据乱了是程序运行出来的,我用8个LED分别表示状态几种状态,只要把那个结构体类型定义在外部XRAM,状态跑的就不对,定义在内部就没有问题,您说是堆栈溢出,可是,我放到外部RAM的堆栈,减小了内部RAM的使用量,应该是增大了堆栈的空间才对呀?请前辈指教
那你仿真看看
断点设在变量定义赋值之后
看变量是不是正确存放了
单片机内部扩展RAM存储数据声明使用xdata。修改内存模式,只是能使用的程序存储区的大小有变化,51的内存空间是不变的。至于报错我觉得是随着你的程序量增加所需要使用的内存也在增加。超过了256个字节。你可以把报错信息贴出来,可以分析一下具体的原因。当你使用关键字data声明后,结构体强制性的存放到内部内存,其它的有些内存变量可能被keil优化或者移到扩展内存了。
51单片机的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁查看: 385|回复: 2
TI CC2541蓝牙4.0模块(数据传输)
连续签到天数:1天签到总天数:78天签到总奖励:482金币
马上注册,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
1. 描述BT2501是采用TI CC2540设计的贴片蓝牙4.0模块。它是一款高性价比、低功耗的片上系统(Soc)解决方案,适合蓝牙低功耗的应用,它降低了建立网络节点的成本。它有一个8051内核的MCU的RF收发器,FLASH程序空间、8KB RAM和其它功能 强大的配套资源。它适用于低功耗系统、超低的睡眠电流及运行时的低功耗。它有128K-256K的FLASH空间与TI的蓝牙低功耗协议相链接,使其成为了高性价比单模低耗能解决方案.
2. 特征 -蓝牙低功耗兼容技术-出色的链路预算(高达97dB),支持远程的应用-精确的接收信号强度检测(RSSI)-有BQB认证-内含高性能的8051单片机-内置电池监控和温度传感器-全速USB接口-带AES安全协议处理器-内含了一个48位的IEEE地址
3. 应用领域1)健身设备:跑步机、健身器等 2)医疗器械:心率计、脉搏测量计等 3)休闲设备:遥控器、玩具等 4)办公设备:打印机、扫描仪等 5)商用设备:收银机、扫描器等 6)手机外设:防丢器等 7)汽车外设:汽车维修仪等 8)其他人机交互设备
4. 性能参数:型号BT2501蓝牙规格Bluetooth V4.0 LE深度睡眠状态电压&0.4uA工作电压2v~3.6v无线传输范围&10&&米传输功率CLASS2&&最大发送功率4dbm灵敏度-85Bm&+/-0.1%BER工作频段2.402GHz – 2.480GHz ISM 频段接收灵敏度94dBm AT 0.1%BER 1Mbps(典型)模块尺寸12mm x 12mm x 2.4mm
欢迎大家添加官方Q群(右侧导航条里面有官方Q群),方便大家更及时沟通!
享有帖子相关版权3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和的同意4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意7、管理员和版主有权不事先通知发贴者而删除本文', this.href);">论坛版权
连续签到天数:1天签到总天数:2天签到总奖励:10金币
沙发啊沙发啊沙发啊
欢迎大家添加官方Q群(右侧导航条里面有官方Q群),方便大家更及时沟通!
连续签到天数:4天签到总天数:416天签到总奖励:11199金币
楼主是供应CC2541蓝牙模块的吗 ?有在智能水杯上应用的成功案例吗 ?
欢迎大家添加官方Q群(右侧导航条里面有官方Q群),方便大家更及时沟通!
站长推荐 /1
欢迎大家打造最适合工程师的网址导航站!
Powered byCC2541板载温度传感器数据采集问题
[问题点数:40分]
CC2541板载温度传感器数据采集问题
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
2015年7月 硬件/嵌入开发大版内专家分月排行榜第二2014年5月 VC/MFC大版内专家分月排行榜第二2014年3月 VC/MFC大版内专家分月排行榜第二2013年10月 VB大版内专家分月排行榜第二2013年7月 VB大版内专家分月排行榜第二2012年5月 VB大版内专家分月排行榜第二2012年4月 VB大版内专家分月排行榜第二2012年2月 VB大版内专家分月排行榜第二2011年11月 VB大版内专家分月排行榜第二
2015年6月 VC/MFC大版内专家分月排行榜第三2015年2月 VC/MFC大版内专家分月排行榜第三2014年1月 VC/MFC大版内专家分月排行榜第三2012年3月 VB大版内专家分月排行榜第三2011年12月 VB大版内专家分月排行榜第三2011年10月 VB大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 cc2541中文数据手册 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信