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

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个回答
294479435@qq.co 回答时间:2019-8-16 09:38:20
看门狗计数时间和芯片擦写的时间是不是超了

评分

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

查看全部评分

tanic 回答时间:2019-8-16 10:23:59
优化flash操作
七哥 回答时间: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过程无需触发喂狗中断。

感谢各位的回复,此贴已结。
LJYHN 回答时间: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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版