Xingou 发表于 2024-4-9 17:17:23

STM32H743 FLASH bank2擦除问题

最近在使用STM32H743做一个项目,代码储存在flash bank1,bank2是空闲的,想用bank2来储存数据,看资料说743的flash两个bank是独立的,可以同时操作,那在bank1储存的代码执行的时候,对bank2的扇区进行擦除,是否会影响bank1代码的执行?

我现在自己测试的情况是,我用的是rtthread RTOS,我用tcp写数据,之后触发bank2扇区擦除,但是执行擦除的操作的时候,我的程序运行会暂停,tcp连接会丢失,一些中断也会超时,擦除完成后才能恢复正常,我想问一下,这种情况是否正常?还是上面说的“743的flash两个bank是独立的,可以同时操作”这个理解有误,希望大神帮忙解答一下,谢谢

eric2013 发表于 2024-4-10 08:23:10

这个理解是没问题的,这个操作俗称RWW Read-while-write,你看看你的擦写操作期间是不是做开关全局中断操作了。进入HAL API里面也看看。

Xingou 发表于 2024-4-10 10:23:50

擦除是在rtthread的线程里面执行的,可以确认擦除期间没有关闭中断,在线调试可以看到中断都处于正常开启的状态,单步执行擦除的时候,也能看到keil的在线监控卡了一小会,有时候在线监控还会直接退出(在单步执行擦除的时候),还有什么方式能排查,或者让擦除的时候不影响tcp的连接

xiayangchun 发表于 2024-4-10 20:37:15

我也发现这个问题了,只要对flash进行擦除,在擦除的这段时间不会执行中断函数,最基本的时间基准定时器也不会进中断,可能擦除的时候hal库关闭了总中断,没具体看库的擦除操作
页: [1]
查看完整版本: STM32H743 FLASH bank2擦除问题