‘壹’ stm32flash写数据怎么存储的
在实际的项目中,我们可能需要保存一些数据,希望下次启动的时候数据还可以使用。在这里介绍使用STM32内部flash来保存数据的方法。
在这里我使用STM32F103C8T6这款芯片做介绍。flash大小64K。本例子0x0800 0000~0x800
3000作为bootloader使用,0x0800 3000~0x0800 C000作为程序存放地址,0x0800 C000~0x0800
FFFF作为本例子的数据存放区域。
程序:
#include "stm32f10x_flash.h"
#define PageSize 1024
u32 data[10] = {1,2,3,4,5,6,7,8,9,10};
u32 data_temp[10] = {0};
u8 flash_write(u32 StartAddr,u32 *p_data,u32 size);
int flash_read(u32 StartAddr,u32 *p_data,u32 size);
‘贰’ STM32的DMA功能能够实现串口接收数据直接存储到Flash中吗
串口接收数据是可以用DMA中断方式的,这和存储到哪里没有关系,接收数据和存储到FLASH中关不矛盾,存储到FLASH中需要写FLASH,当DMA接收到数据后,你就把数据写到FLASH就可以了,不过并不推荐你这么做,因为芯片的FLASH擦写的次数有限,如果确实有数据需要断电保存,可以使用EEPROM,数据存储量大,成本低,编程也比较简单,另外推荐你有问题去21IC电子工程师论坛,关于STM32可以询问正点原子大神,不要说编程,就连方案都可以给你很好的建议,可以说关于STM32,没有他不会的。