flash模拟EEPEOM写数据引起看门狗复位的问题;

2019-07-20 10:03发布

各位大神,在用FLASH模拟EEPROM的写数据时会引起窗口看门狗复位,我的理解应该是因为在擦除扇区有一个等待的时间,在这个等待的时间这时候没有喂狗,所以导致看门狗复位?那我怎么样才能让在等待的时间时候也同时喂狗呢,用的是HAL库,有没有大神可以帮帮忙,瞅了好久程序了,不知道该怎么改。感谢各路大神。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
郭子
1楼-- · 2019-07-20 20:13
 精彩回答 2  元偷偷看……
Noctis
2楼-- · 2019-07-20 20:45
本帖最后由 Noctis 于 2018-1-11 10:10 编辑
郭子 发表于 2018-1-11 08:59
谢谢原子哥,我是在中断里喂狗的,但是这个操作FLASH的时间在哪里可以设置呢?没找到啊

FLASH的烧写、刷除时间你是改变不了的。另外你这个问题不是简单的在中断里喂狗就可以的。本身窗口看门狗用起来就比较麻烦,你要自己算好间隔,不能迟喂也不能早喂。而且最麻烦的是,默认情况下你的中断向量是在FLASH中,当你对FLASH进行写操作时,中断函数是执行不了的,因为写操作期间读不了FLASH。所以你还需要将中断向量移到ram中,中断函数也要放在ram中,否则你的喂狗时间肯定不准。
呵呵呵开西寨
3楼-- · 2019-07-21 01:40
 精彩回答 2  元偷偷看……
郭子
4楼-- · 2019-07-21 04:38
 精彩回答 2  元偷偷看……
郭子
5楼-- · 2019-07-21 06:37
Noctis 发表于 2018-1-11 09:50
FLASH的烧写、刷除时间你是改变不了的。另外你这个问题不是简单的在中断里喂狗就可以的。本身窗口看门狗 ...

我在FLASH_WaitForLastOperation(FLASH_WAITETIME);                               //等待上次操作完成这个函数里面也进行了喂狗,这个函数就是等待FLASH操作的函数,然后我在这里面加了喂狗函数,也是不行
Noctis
6楼-- · 2019-07-21 11:31
郭子 发表于 2018-1-11 11:28
万分感谢,我试一下吧,之前你说的“在对FLASH操作前建一个定时器,在定时器中喂狗,操作完后关闭定时器 ...

抱歉,之前说的太简单了,你要按我后面说的将中断向量表,以及中断函数移到非FLASH的地方才能正常喂狗。

一周热门 更多>