6504|10

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【求助】FLASH存参数编程? [复制链接]

比如我想在flash地址0x1000写每次改变的变量unsigned int para

在上电时取这个参数para

怎么编程?

我怎么总也存不上……

有一个调试时的问题,因为要把握的试验板断电、重新上电才能检测flash是不是正确存了参数,但在c-spy环境下,一旦试验板断电,c-spy也就error中断了,这样para的参数在c-spy下就看不了了,这个小问题怎么解决?

最新回复

已经做好了。  详情 回复 发表于 2005-1-21 15:14
 
点赞 关注

回复
举报

87

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
是要把数据存到ROM中吗
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
#define DATA_FLASH_ADDR (0x1000) // flash info seg B 地址

//写信息
{
unsigned char *pcFLASH;
unsigned int *piFLASH;

_DINT(); // 禁止中断, 读写FLASH时要屏蔽中断, 以免产生错误

pcFLASH = (unsigned char *)DATA_FLASH_ADDR;
piFLASH = (unsigned int *)DATA_FLASH_ADDR;

// 擦除信息
FCTL3 = 0x0A500; /* Lock = 0 */
FCTL1 = 0x0A502; /* ERASE = 1 */
*piFLASH = 0; /* erase Flash segment */

_NOP();

// 写信息
FCTL1 = 0x0A540; /* WRT = 1 */
//
*pcFLASH = module.addr_id;
//

_NOP();

FCTL1 = 0x0A500; /* WRT = 0 */
FCTL3 = 0x0A510; /* Lock = 1 */

_EINT(); // 允许中断
}

// 读信息
{
unsigned char *pcFLASH;
pcFLASH = (unsigned char *)DATA_FLASH_ADDR;

module.addr_id = *pcFLASH;

}

试试,我用没问题。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

4
 
另外注意,对于int型要存在偶地址开始的存储空间上,ok
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
3ks!我试试!

关于调试技巧呢?

有一个调试时的问题,因为要把握的试验板断电、重新上电才能检测flash是不是正确存了参数,但在c-spy环境下,一旦试验板断电,c-spy也就error中断了,这样para的参数在c-spy下就看不了了,这个小问题怎么解决?
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

6
 
我是将程序打断后,拔掉JTAG,在将目标板断电,这样IAR一般不会提示出错时间久了才会提示出错,但重新连上JTAG加电后
点IAR的复位按钮程序从头开始运行
我都是这样子做的
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用:

我是将程序打断后,拔掉JTAG,在将目标板断电,这样IAR一般不会提示出错时间久了才会提示出错,但重新连上JTAG加电后
点IAR的复位按钮程序从头开始运行
我都是这样子做的
可是一旦复位,还是看不了flash是否保存了阿?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(中级)

8
 
建议:Flash的调试必须同时进行,否则没有任何意义
void main(void)
{
unsigned char m;
WDTCTL=WDTPW+WDTHOLD;
GetFromFlash();
whlie(1)
{
m=0x02;
S××eToFlash();
WDTCTL=WDTPW+WDTSSEL0;
for(i=0;i<10;i++)i=2;
}
}
虽然这个程序的思想不是很好,但是用来检测FLASH的数据保存(结合断点的设置)还是很有效的,仅供参考!
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

9
 
void Flash_wb( char *Data_ptr, char byte )
{
FCTL3 = 0x0A500; /* Lock = 0 */
FCTL1 = 0x0A540; /* WRT = 1 */
*Data_ptr=byte; /* program Flash word */
while(FCTL3&BIT0==BIT0);
FCTL1 = 0x0A500; /* WRT = 0 */
FCTL3 = 0x0A510; /* Lock = 1 */
}

写入时:
Flash_wb((char*)ADDRESS,VALUE);
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 
在试验板上搭接一个显示电路,把flash中的数据显示出来看
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

11
 
已经做好了。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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