本例程实现stm32f103实现片内Flash从一个到2k字节写操作。测试完全无误。
+ [+ I& ]$ E6 T0 f2 `
整个程序是在UCOS系统下运行的。
写操作的函数为
/******************************************************
/ s2 K4 Y# N" P( c$ B5 P
函数:CPU_INT08U flashWrite( CPU_INT08U *dataBuf,
CPU_INT08U NumOfData,
CPU_INT08U SartAddr)$ W: ~; i' F# {9 s2 b
功能:将一串数据写入到片内flash( x2 Y. k$ t# S: l) P3 [
参数:CPU_INT08U *dataBuf //要被写入的数据指针 6 y( y3 B1 W# v( p7 R. B" d
CPU_INT08U NumOfData//写入数据的个数
CPU_INT08U SartAddr //在flash中对应0的偏移地址
******************************************************/9 b, k# Q$ i# ^, B9 ?! f
CPU_INT08U flashWrite( CPU_INT08U *dataBuf, // 要被写入的数据指针 CPU_INT08U NumOfData, //写入数据的个数
CPU_INT16U SartAddr) //在flash中对应0的偏移地址9 Q: N( y7 B+ X* Z' L0 L- z
8 D, ~- l- n% J7 s* a
因stm32f103一个页面是2k,所以最大写入数据量为2k0 V. g7 b/ f+ r" f
在flash.c中的有& x9 z# F9 K7 ?6 V( h, j/ s
#define FLASH_START_ADR 0x0800f000
那么0x0800f000就是0地址。函数中的SartAddr就是相对于0x0800f000的偏移地址# k( _, t) |1 j& N/ {. G4 K
可以一次写入一个字节到2k字节。, ]+ \% E+ s; a3 K! u, W& C; ?
操作过程是读改写0 n% ` k. p. H- b
谢谢支持