你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 4492|回复: 7

关于flash,AD,复位的纠结

[复制链接]

1

主题

9

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-3-8 08:42:16 | 显示全部楼层 |阅读模式
stm32f103rbt6
需要在程序运行时写入从AD采集到的一个数值到flash 的0x800c000地址处。
第一次运行程序,成功启动系统,并且在0x800c000处成功写入AD采集到的数据。
但是,一旦复位,系统便无法运行:具体现象为晶振能起震,但main函数无法运行。
如果将操作flash的部分屏蔽,程序完全没有任何问题,复位也不会出现奇怪的现象。
flash的操作完全按照官方提供的样例程序进行。
请问我应该从何处下手解决此问题?
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2012-3-8 09:31:29 | 显示全部楼层

RE:关于flash,AD,复位的纠结

FLASH处理的问题。FLASH只能写入一次,下次写入的时候需要擦除FLASH这个地址所在的这一片(有的可能叫这一区),才能再次写入。这个是由于FLASH本身的机制决定的。
回复 支持 反对

使用道具 举报

1

主题

9

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2012-3-8 10:42:37 | 显示全部楼层

回复:关于flash,AD,复位的纠结

回复第 2 楼 于2012-03-08 01:31:29发表:
FLASH处理的问题。FLASH只能写入一次,下次写入的时候需要擦除FLASH这个地址所在的这一片(有的可能叫这一区),才能再次写入。这个是由于FLASH本身的机制决定的。 

谢谢你的回复啊,有些问题还是不是很清楚: 
const uint16_t ThresholdValue[]__at(0x800C000)={1000,1000,1000,1000,1000,1000,1000,1000} ;

/*wrtie to flash*/
 FLASH_Unlock();
 FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR); 
 if((ret1=FLASH_ErasePage((uint32_t)&ThresholdValue[0]))!=FLASH_COMPLETE)while(1)
  Printf(" flash_erase_err=%d ",ret1);
 for(i=0;i
回复 支持 反对

使用道具 举报

1

主题

9

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2012-3-8 13:47:22 | 显示全部楼层

RE:关于flash,AD,复位的纠结

纠结啊  
开始怀疑是擦除的时候把flash全部都插除了  所以第一次可以运行(在ram中有代码),第二次就没代码了。
于是将擦除前与擦除后的flash全部都通过串口读出来,发现是一样的。这样就不知道问题出在什么地方了。
有哪位朋友能提供点帮助啊 ,可能是什么地方出问题了呢 ?
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2012-3-8 14:46:04 | 显示全部楼层

RE:关于flash,AD,复位的纠结

第二次写FLASH的时候,死到这里了, 擦除的时候用FLASH_ErasePage这个函数。
回复 支持 反对

使用道具 举报

3

主题

185

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-3-8 22:29:56 | 显示全部楼层

回复:关于flash,AD,复位的纠结

是不是你有程序加密的功能?在程序里面加密?
我以前遇到过这种问题,如果有程序加密的话,写flash好像是有问题的。
回复 支持 反对

使用道具 举报

1

主题

9

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2012-3-9 19:56:41 | 显示全部楼层

回复:关于flash,AD,复位的纠结

回复第 5 楼 于2012-03-08 06:46:04发表:
第二次写FLASH的时候,死到这里了, 擦除的时候用FLASH_ErasePage这个函数。 

能麻烦说的稍微详细点么。 我擦除用的是FLASH_ErasePage这个函数啊。然后第二次擦除发生在系统复位重启后才发生,第二次复位后整个系统就无法启动了,测试了下根本就不会运行到flash擦除这个地方来。
如果我第一次运行程序在擦除flash前让系统复位,那么第二次就可以正常启动系统并运行程序。但如果第二次程序对flash进行过操作,那么复位后第三次就无法启动系统。
回复 支持 反对

使用道具 举报

1

主题

9

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2012-3-9 19:57:46 | 显示全部楼层

回复:关于flash,AD,复位的纠结

回复第 6 楼 于2012-03-08 14:29:56发表:
是不是你有程序加密的功能?在程序里面加密?
我以前遇到过这种问题,如果有程序加密的话,写flash好像是有问题的。 

我的程序没有设置加密功能,明天把加密选上试试看。太纠结了。
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版