初级会员

- 积分
- 86
- 金钱
- 86
- 注册时间
- 2013-9-13
- 在线时间
- 3 小时
|
5金钱
Flash模拟EEPROM试验,直接调用的原子的stmflash.c中的子函数进行u16数组的读写,
当连续写入多于七个数组,只有前面7个读回来数据是对的,后面的数据全部都是FF FF,
一开始#define FLASH_SAVE_ADDR 0X08070000 以为是FLASH地址溢出了,
将宏定义改为#define FLASH_SAVE_ADDR 0X08060000 后结果是一样的。
是否函数 STMFLASH_Write()只能连续写7次*256一共1792个半字?
大体上的代码如下:
#define N 256
#define FLASH_SAVE_ADDR 0X08060000 //设置FLASH 保存地址(必须为偶数)
u16 Text_Data[N]={2047,2098,2148,2199,2249,2299,2349,2399,...};//这个数组有256个元素,实际上是12位的数据,在贴子里未能一一列举
u16 datatemp[N]; //用来临时保存FLASH读出的数据
int main(void)
{
u8 tn=0;
u16 x=0;
u8 y=0;
while(1)
{
STMFLASH_Write(FLASH_SAVE_ADDR+tn*N,Text_Data,N); //从指定地址开始写入指定长度的数据
tn++;
if(tn==8)
{
TIM_Cmd(TIM3, DISABLE); //失能TIMx
for(y=0;y<tn;y++)
{
STMFLASH_Read(FLASH_SAVE_ADDR+y*N,(u16*)datatemp,N); //从指定地址开始读出指定长度的数据
for(x=0;x<=255;x++)
{
UART4_Send_chardata(datatemp[x]); //将12位的数据(0~4096)转换为4个数字字符,并通过串口输出
UART4->DR = ',';
}
}
}
}
}
|
|