1.大家都知道,stm32的flash的写入是需要先进行擦除整页的操作的。所以之前的已经存好的数据会被擦除。那么想要实现一直写,而之前保存的数据不被擦除的话应该要怎么实现呢?
2.stm32的每款芯片的容量都不相同,有大密度的,中密度以及小密度的。以stm32f103RB举例。这款芯片只有128KB的flash,每一页只有1K的存储空间。选择靠后的页对于程序的烧写是没有影响的。
3,选择最后一页,0x0801FC00,作为起始位置。在这一页进行存储,在前一页也就是0x0801FBFA可以储存上一次存完数据后的末地址。当下一次要进行存储数据时,将该位置的数据读出,在此位置基础上写入数据,等数据写入完成后,将此时的位置写入之前的位置存储地址0x0801FBFA,以及后面三个字节。
4.注意由于stm32的储存是小端储存,注意位置跟数据的高低位关系。且能够将32位数据,16位,8位数据进行互换。
5.仅供思路参考,个人代码太过粗糙,不给大家笑了。另外,不要放入主循环内,否则芯片的使用次数及使用寿命会大大降低。