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

STM32F030C6开启WWDG 片内flash写异常

[复制链接]
cajlib 提问时间:2019-8-15 17:53 /
STM32F030C6开启WWDG在循环写片内flash时触发复位,使用了HAL库,系统启动后配置了WWDG,配置如下:
Wwdg.Instance = WWDG;
Wwdg.Init.Prescaler = WWDG_PRESCALER_8;
Wwdg.Init.Window    = 0x40;
Wwdg.Init.Counter   = 0x7F;
Wwdg.Init.EWIMode   = WWDG_EWI_ENABLE;

HAL_WWDG_Init(&Wwdg);
HAL_NVIC_SetPriority(WWDG_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(WWDG_IRQn);


在不操作写片内flash时,系统运行正常(GPIO读写,WWDG都运作正常);

但如果执行一段循环写片内flash(反复擦写),极大概率会触发复位;
如果不开启WWDG,同样的flash写操作是没问题的。

请教各位,这是片内flash操作影响到WWDG的中断操作吗?还是哪里配置出问题了?
收藏 评论6 发布时间:2019-8-15 17:53

举报

6个回答
00-405686 回答时间:2019-8-16 09:38:20
看门狗计数时间和芯片擦写的时间是不是超了

评分

参与人数 1蝴蝶豆 +1 收起 理由
STMCU + 1

查看全部评分

tanic 回答时间:2019-8-16 10:23:59
优化flash操作
toofree 回答时间:2019-8-16 13:05:28
可能是,Flash操作时间过长,没有及时喂狗。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

cajlib 回答时间:2019-8-16 18:09:50
问题应该如楼上各位所说的那样

在STM32F0的 Reference manual中,关于flash擦写操作有这么一段话:
On the contrary, during a program/erase operation to the Flash memory, any attempt to readthe Flash memory will stall the bus. The read operation will proceed correctly once the program/erase operation has completed. This means that code or data fetches cannot be made while a program/erase operation is ongoing.
也就是说在擦写过程中,中断程序是无法执行的
擦写过程需触发喂狗中断失败,导致系统复位。
如果flash擦写操作时间小于喂狗超时时间,可以在擦写前先手动喂狗,确保擦写flash过程无需触发喂狗中断。

感谢各位的回复,此贴已结。
北国牧马 回答时间:2019-8-21 14:49:16
对flash操作时间过长。你可以不开启看门狗,测试下对flash的操作时间

评分

参与人数 1蝴蝶豆 +1 收起 理由
STMCU + 1

查看全部评分

butterflyspring 回答时间:2019-8-22 15:53:26
datasheet 上面有烧录时间的参数,根据楼主的烧录模式可以估算出大致执行时间,留出足够的余量就行

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版