25139|8

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

想了解下STM32读写Flash和中断同时存在的处理思路 [复制链接]

写过两款STM32芯片的程序,STM32F107和STM32F207,但总感觉Flash这一块用的不爽。随便说说,当发牢骚了,万一有路过的大神刚好看到了,而恰巧您又有时间的话,给暂指导指导思路那必然也是极好的。
    首先,是写Flash,在F1里,Flash倒还好,每页也就2KB,读写Flash的时候大不了先将要擦的一页全部给放到缓存中去,然后再将缓存里的数据以及要写的数据依次给写进去就可以了,而在F2中,每页大小不相等不说,最大的一页能达到128K,这ram总的大小也没这么大的。只能老老实实的存点历史记录什么的,要是想存个100字节左右的配置文件,就得先擦除128K的Flash,再重新写,关键这一页剩余的空间你还不能当做他用,否则一更新配置文件就要擦除这128K,这页里别的文件也都被擦除了。当然你也可以先将这页里的所有数据给存到另一个Flash页里面去,擦除后,再一一给取回来,但我肯定算比较懒的那种人,不是被逼到一定份上的话,我是不愿意去这么整的。总担心Flash万一写错了一个字节怎么办。
其次,也就是写Flash时中断的问题了,网上看了不少资料,都说写Flash前要关闭中断,好吧,我关,等我想找个能关全局中断的函数,在固件库手册找了几圈都找不到...好吧,认了,我开了几个我就给关几个得了...问题来了,USART,SPI这些还好,大不了这段时间不响应上位机发来的数据了。但一些个定时的中断,systick,RTC,Tim等,你让我把这些个中断都关了再开,整个程序流程都乱了。这部分怎么搞,也是我现在还比较疑惑的,不过既然stm32系统都能上了,估计RTOS里面应该考虑到这部分了吧,等待大神解惑~
此帖出自stm32/stm8论坛

最新回复

就是!   详情 回复 发表于 2020-4-14 16:00
点赞 关注
 

回复
举报

16

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
无比巨赞啊
此帖出自stm32/stm8论坛
 
 

回复

29

帖子

1

TA的资源

一粒金砂(中级)

板凳
 

写Flash时,FLASH已被写操作占用,此时发生中断,cortex-m响应中断要执行的代码如果在FLASH中,FLASH无法响应cortex-m的取指令要求,cortex-m当然取不到指令,只能干瞪眼。

如果想写FLASH时响应中断,唯有cortex-m从RAM中取指令能行的通,即写FLASH前,将响应中断的代码从FLASH拷入RAM中运行并将中断向量表设置到RAM即可。

请参考本人博客:
在STM32F103ZET6上实现的使用串口进行IAP程序,可以实用的

实现了边中断接收串口数据,边把数据写入FLASH的IAP

此帖出自stm32/stm8论坛
 
 

回复

29

帖子

1

TA的资源

一粒金砂(中级)

4
 

写Flash时,FLASH已被写操作占用,此时发生中断,cortex-m响应中断要执行的代码如果在FLASH中,FLASH无法响应cortex-m的取指令要求,cortex-m当然取不到指令,只能干瞪眼。

如果想写FLASH时响应中断,唯有cortex-m从RAM中取指令能行的通,即写FLASH前,将响应中断的代码从FLASH拷入RAM中运行并将中断向量表设置到RAM即可。

请参考本人博客:
在STM32F103ZET6上实现的使用串口进行IAP程序,可以实用的
实现了边中断接收串口数据,边把数据写入FLASH的IAP

此帖出自stm32/stm8论坛
 
 
 

回复

29

帖子

1

TA的资源

一粒金砂(中级)

5
 
吐槽:上次发这个IAP的帖子到现在都没审核出来。

没人审核就算了,直接不让发链接也算了,不要让人干等好不好。

[ 本帖最后由 kevinyzw 于 2012-12-3 21:44 编辑 ]
此帖出自stm32/stm8论坛

点评

我们带有链接的需要人工审核。审核需要一定时间。  详情 回复 发表于 2012-12-4 09:37
 
 
 

回复

6066

帖子

92

TA的资源

裸片初长成(初级)

6
 

回复 5楼 kevinyzw 的帖子

我们带有链接的需要人工审核。审核需要一定时间。
此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

7
 
配置的数据可以用指针指向不固定的地址,所以不必一次修改一擦除.

不是擦除操作不必关中断
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

8
 
kevinyzw 发表于 2012-12-3 21:15
写Flash时,FLASH已被写操作占用,此时发生中断,cortex-m响应中断要执行的代码如果在FLASH中,FLASH无法响 ...

这篇文章看不到,请问在哪能看到,谢谢!
此帖出自stm32/stm8论坛

点评

就是!  详情 回复 发表于 2020-4-14 16:00
 
 
 

回复

157

帖子

0

TA的资源

纯净的硅(初级)

9
 
zhexun 发表于 2015-9-4 14:55 这篇文章看不到,请问在哪能看到,谢谢!

就是!

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表