搜索
bottom↓
回复: 13

stm32f030 读flash地址会死机,大家帮我分析分析

[复制链接]

出0入0汤圆

发表于 2014-8-14 20:57:06 | 显示全部楼层 |阅读模式
#define FLASH_USER_START_ADDR   ((uint32_t)0x08006000)


void main(void)
{
        FLASH_Unlock();
        FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR);
        if (FLASH_ErasePage(FLASH_USER_START_ADDR)!= FLASH_COMPLETE)
       {
                   /* Error occurred while sector erase.
                    User can add here some code to deal with this error  */
                  while (1)
                        {
                }
       }
        FLASH_ProgramWord(FLASH_USER_START_ADDR, 1000);//向地址写入1000

        FLASH_Lock();
        while(1)
        {
                Data = *(__IO uint32_t *)FLASH_USER_START_ADDR;//读取地址  就会死机
               
        }

}

如果使用Data = *(__IO uint16_t *)FLASH_USER_START_ADDR;就会死机 ,但是只能读取1000的低八位数据。希望大家帮忙分析一下

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2014-8-14 21:45:48 | 显示全部楼层
有人遇到没有

出0入0汤圆

发表于 2014-8-14 22:09:50 | 显示全部楼层
读的时候,也需要unlock不?

出0入0汤圆

 楼主| 发表于 2014-8-15 09:14:47 | 显示全部楼层
自己顶一下

出0入0汤圆

 楼主| 发表于 2014-8-15 10:44:08 | 显示全部楼层
maimaige 发表于 2014-8-14 22:09
读的时候,也需要unlock不?

不需要的

出0入0汤圆

发表于 2014-8-15 11:03:33 | 显示全部楼层
我一般是按字节读的,没有问题

出0入0汤圆

发表于 2014-8-15 19:27:35 来自手机 | 显示全部楼层
建议关所有中断,再读写,可以看看  RWW相关。

出0入0汤圆

发表于 2014-8-15 21:48:42 | 显示全部楼层
本帖最后由 zf12862177 于 2014-8-15 21:50 编辑

没看清楚你想表达什么

出0入0汤圆

 楼主| 发表于 2014-8-15 22:02:45 | 显示全部楼层
zf12862177 发表于 2014-8-15 21:48
没看清楚你想表达什么

如果使用Data = *(__IO uint16_t *)FLASH_USER_START_ADDR;就不会死机 ,但是只能读取1000的低八位数据。希望大家帮忙分析一下

出0入0汤圆

发表于 2016-3-21 23:16:05 | 显示全部楼层
lz,你有没有解决这个问题呀,我现在也遇到了

出0入0汤圆

发表于 2016-5-20 10:21:00 | 显示全部楼层
天涯行客 发表于 2014-8-15 22:02
如果使用Data = *(__IO uint16_t *)FLASH_USER_START_ADDR;就不会死机 ,但是只能读取1000的低八位数据。 ...

请问楼主搞明白了么,我也遇到了这个问题

出0入0汤圆

发表于 2016-5-20 12:19:06 | 显示全部楼层
Data的数据类型是什么?
试试延时2ms

出0入0汤圆

发表于 2016-5-20 12:27:24 | 显示全部楼层
Address = FLASH_USER_START_ADDR;                //flash 开始位
    *p_flash = *(__IO struct stu_flash_data *)Address;

我是这样读的,这个数据结构有几十个字节长度,就这样一句强制类型转换就全读取了,也没发现有问题。

出0入0汤圆

发表于 2018-12-25 11:37:30 | 显示全部楼层
注意地址不能是奇數地址
0x08002001,0x08002003
只能是偶數地址
0x08002000,0x08002002

他一讀就是16bits
寫入也是
不這樣就死給你看
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-19 02:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表