为什么stm32f4xx_flash.h提供的库函数是Flash_EraseSector()而不像F1...
为什么stm32f4xx_flash.h提供的库函数是Flash_EraseSector()而不像stm32f10x_flash.h里面提供的是FLASH_ErasePage,因为一个扇区是好多个页,很大了可以说,不好细划分出来使用,尤其在做在线升级的时候,需要一个程序升级的标志位,或者需要程序使用一个重启不改变的标志位,这时候难道要用一个扇区嘛?觉得很不方便,不知道这样做出于什么考虑。擦除都是整个扇区一起擦除的 楼主啊 我是这样理解的stm32f10x的flash从16kb到1M的都有,而且绝大部分都比较小,所以需要一页一页的擦除,而stm32f4xx的flash最小的只有一个410的是64的,其余的绝大部分都很大,根据实际需要所以升级到按照扇区进行擦写。 flash比较大,占用或擦除一个扇区可能并不觉得浪费。以前是擦除字节,后来直接擦除页,现在擦除扇区,官方可能考虑更快更便捷。 这就是F4xx和F10x的区别所在,系列不同,容量不同,适用的API也不同 我觉得是,因为STM32的FLASH的擦写次数是有限的,尽量使用擦扇区,比擦页安全。
因为擦多了,出现坏块,那就影响使用了。
而且,估计官方的设想是把FLASH作为升级程序用的,并不是用来保存零碎数据的。
如果保存零碎数据,建议还是使用外部FLASH了。 你们都想多了,我认为主要是为了提高性能,减少多次擦拭的损伤 Flash比较大的STM32,前几个扇区都相对来说要小一些,bootloader和相关的一些参数可以放在小扇区中 Flash页擦除是很费时间的,而扇区擦除则快很多,STM32的片内Flash多为程序存储使用,是连续的,所以适合扇区擦除,如果支持为了保存参数,还是外挂一个EEPROM方便。 可以参考一下这个,STM32F4(Flash读保护)
页:
[1]
2