硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5898|回复: 6
收起左侧

[有问必答] 用STM32CUBE编写STM32F103C8写FLASH程序造成芯片不能被仿真器识别了

[复制链接]

20

主题

56

回帖

116

积分

初级会员

积分
116
发表于 2019-8-16 22:28:49 | 显示全部楼层 |阅读模式
本帖最后由 bucker 于 2019-8-16 22:30 编辑

用STM32CUBE生成的环境写了以下代码,向STM32F103C8的FLASH写数据
                //设置PageError
uint32_t PageError = 0;
               
                //1、解锁FLASH
                HAL_FLASH_Unlock();
               
                //2、擦除FLASH
                //初始化FLASH_EraseInitTypeDef
                FLASH_EraseInitTypeDef f;
                f.TypeErase = FLASH_TYPEERASE_PAGES;
                f.PageAddress = 0x0800F000;
                f.NbPages = 1;
                //调用擦除函数
                HAL_FLASHEx_Erase(&f, &PageError);
               
                //3、对FLASH烧写
                HAL_FLASH_Program(TYPEPROGRAM_WORD, 0x0800F000, 0x12345678);
               
                //4、锁住FLASH
                HAL_FLASH_Lock();

开始用J-LINK仿真,直接下载方式运行结果无效,FLASH未被写入数据。仿真调试模式下载运行每次运行后仿真环境出需要错退出,但再次进入调试模式可以看到FLASH中存储的数据结果是正确的。改用H-JTAG仿真器试验却发生仿真调试运行结果正常,但退出仿真环境后芯片就不能再被识别了,也就是无论是H-JTAG或J-LINK都无法在对芯片读写了。换了一块板子,结果也是如此。请问各位大侠,原因何在呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2019-8-17 00:35:26 | 显示全部楼层
估计是flash被读写保护了,这个是STM32芯片的特色,此贴的方案可以解决:

【JLINK下载失败,STLINK下载失败万能解决方案】JLINK和STLINK都无法下载时的解决办
https://forum.anfulai.cn/forum.p ... 6745&fromuid=58
(出处: 硬汉嵌入式论坛)


回复

使用道具 举报

20

主题

56

回帖

116

积分

初级会员

积分
116
 楼主| 发表于 2019-8-17 12:13:03 | 显示全部楼层
谢谢!下周一试试你的方法。
回复

使用道具 举报

20

主题

56

回帖

116

积分

初级会员

积分
116
 楼主| 发表于 2019-8-19 18:13:23 | 显示全部楼层
今天用版主的办法救活了一片,还有一片没效果。救活的那片可以用J-LINK读写调试,但用H-JTAG只能识别芯片,但读写及擦除都不能进行。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2019-8-20 08:46:31 | 显示全部楼层
bucker 发表于 2019-8-19 18:13
今天用版主的办法救活了一片,还有一片没效果。救活的那片可以用J-LINK读写调试,但用H-JTAG只能识别芯片, ...

也可以试试串口下载。
回复

使用道具 举报

9

主题

59

回帖

86

积分

初级会员

积分
86
发表于 2019-9-10 08:31:51 | 显示全部楼层
10有八九是你关闭了SWD 口。。。要使SWD口,遇到这种情况可以用J-FLASH烧录。按硬件复位然后点击链接。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2021-7-14 17:49:13 | 显示全部楼层
我也遇到了同样得问题,是设置了option byte的读保护,flash被多次写入后就会出现芯片无法识别的情况,且救不活
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-16 16:07 , Processed in 0.039209 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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