打印
[技术问答]

dataflash读写问题

[复制链接]
2003|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lss1985|  楼主 | 2018-7-8 20:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序中用到dataflash来记录几个按键值,当按键值发生变化时会写dataflash,写dataflash程序如下
void DATA_FLASH_Write(uint32_t u32addr,uint32_t u32data)
{
        DisableInterrupts();       
        SYS_UnlockReg();       
        FMC_ENABLE_ISP();

        FMC_Erase(u32addr);
        FMC_Write(u32addr,u32data);
       
        FMC_DISABLE_ISP();
       
        SYS_LockReg();               
        EnableInterrupts();               
}

问题是在程序中还有一个TImer0定时中断函数,里面有一个1ms的LED显示功能
现在出现当写dataflash时LED会闪一下,感觉像是由于dataflash写数据时间过长造成了显示的中断

不知道是不是这个原因
沙发
zhuomuniao110| | 2018-7-8 22:41 | 只看该作者
你是在定时器中断进行的LED闪烁操作?而这个写操作优先级高,影响了那个LED。

使用特权

评论回复
板凳
zhuomuniao110| | 2018-7-8 22:42 | 只看该作者
这也没啥啊,可以作为操作写的指示了。。哈哈

使用特权

评论回复
地板
lss1985|  楼主 | 2018-7-9 15:07 | 只看该作者
zhuomuniao110 发表于 2018-7-8 22:41
你是在定时器中断进行的LED闪烁操作?而这个写操作优先级高,影响了那个LED。 ...

是影响了LED的扫描,出现了显示的中断,就是解决不了这个bug
实测dataflash一页的擦除加上写一个数据需要20ms,那LED显示要中断20ms,肉眼可见的闪烁
不知道对于这个dataflash写还有没有别的妙招

使用特权

评论回复
5
huangcunxiake| | 2018-7-9 15:39 | 只看该作者
LED你用的扫描方式显示啊?这个如果你换成驱动芯片的就可以解决了。

使用特权

评论回复
6
huangcunxiake| | 2018-7-9 15:40 | 只看该作者
驱动芯片的,当年不操作它的时候,它可以保持原来的显示内容。而不会导致中断,如果用IO扫描显示,那么肯定会这样。

使用特权

评论回复
7
zhuomuniao110| | 2018-7-12 14:48 | 只看该作者
能否设置个变量,这个变量标记什么时候LED从亮到灭,然后这个时候再执行dataflash读写。

使用特权

评论回复
8
lss1985|  楼主 | 2018-7-13 09:27 | 只看该作者
zhuomuniao110 发表于 2018-7-12 14:48
能否设置个变量,这个变量标记什么时候LED从亮到灭,然后这个时候再执行dataflash读写。 ...

简单测了一下,擦除一页flash,写一个数据所需要的时间在20ms以上,中断被打断,LED闪是不可避免了
换了个方法,在闪的瞬间显示OK,表示数据记录成功,只能这么办了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

92

帖子

2

粉丝