智能车制作

标题: flash_init();函数问题,求大神指教 [打印本页]

作者: yinhuipeng    时间: 2015-11-29 18:11
标题: flash_init();函数问题,求大神指教
今天同学用26调一个读写flash的程序,好像加上flash_init();有时就不好使。
后来解决方法是:初始化后加一段延时就好了
但还不知其中原因,了解的大神请不吝赐教!

作者: yinhuipeng    时间: 2015-11-29 18:18
里面也就写了几个寄存器
作者: 机遇    时间: 2015-11-29 20:58
你就给个函数名 谁知道为啥啊
作者: yinhuipeng    时间: 2015-11-30 01:38
。。。。。
作者: 灬Mr.Alien    时间: 2015-11-30 19:17
flash读写很慢的,你必须加一段时间的延迟,才能真正读写完毕。之前XS128的FLASH我加的就是一定的延迟。比赛中尽量不用,否则占很多指令周期的。flash寄存器里我忘记是不是有判忙的标志位了。总之,想用,必须加延迟
作者: 1013956044    时间: 2016-1-6 23:06
灬Mr.Alien 发表于 2015-11-30 19:17
flash读写很慢的,你必须加一段时间的延迟,才能真正读写完毕。之前XS128的FLASH我加的就是一定的延迟。比 ...

不用的话 那你们用按键调参数怎么保存的?

作者: 1013956044    时间: 2016-1-6 23:07
请问题主你们的按键调参数后的flash保存写好了?我的写了老是保存不了 请教
作者: yinhuipeng    时间: 2016-2-27 23:30
1013956044 发表于 2016-1-6 23:06
不用的话 那你们用按键调参数怎么保存的?

能用啊,你什么问题
作者: 1013956044    时间: 2016-2-27 23:35
yinhuipeng 发表于 2016-2-27 23:30
能用啊,你什么问题

参数调整好了之后  按下复位  那个参数的值没有保存下来

作者: yinhuipeng    时间: 2016-2-29 23:46
1013956044 发表于 2016-2-27 23:35
参数调整好了之后  按下复位  那个参数的值没有保存下来

那应该没有成功写入吧,你试试写入固定值,看能不能读出来呗

作者: 1013956044    时间: 2016-3-1 12:17
yinhuipeng 发表于 2016-2-29 23:46
那应该没有成功写入吧,你试试写入固定值,看能不能读出来呗

我现在是掉电之后还是能保存之前我保存的值   但是程序烧进去不会擦除先前的值,显示的还是我之前保存的值

作者: 1013956044    时间: 2016-3-1 19:13
yinhuipeng 发表于 2016-2-29 23:46
那应该没有成功写入吧,你试试写入固定值,看能不能读出来呗

/***FUNC+*********************************************************************/
/* Name   :  Flash_writeDATA16                                               */
/* Descrp : flash写入操作                                                    */
/* Input  : sectNo:目标扇区号 (K60N512实际使用0~255)                      */
/*          offset:写入扇区内部偏移地址(0~2043)                            */
/*          DATA :需要写入的数据                                             */
/*                                                                          */                                                   
/***FUNC-*********************************************************************/

U8 Flash_writeDATA8(U16 sectNo,U16 offset,U8 DATA)
{
    U32 destaddr;  
    union
    {
        U32   word;
        U8  byte4[4];
    } dest;
    union
    {
        U32   Data;
        U8  data[1];
    } dest1;       
     if(offset%4 != 0)
        return 1;   //参数设定错误,偏移量未对齐(4字节对齐)//此处提示警告,但是安全的……
    // 设置写入命令
    destaddr = (U32)(sectNo*(1<<11) + offset);//计算地址
    dest.word = destaddr;
    dest1.Data = DATA;
        // 设置目标地址
        FTFL_FCCOB0 = PGM4;
        FTFL_FCCOB1 = dest.byte4[2];
        FTFL_FCCOB2 = dest.byte4[1];
        FTFL_FCCOB3 = dest.byte4[0];

        // 拷贝数据
        {    //FTFL_FCCOB4 =dest1.data[3];
            // FTFL_FCCOB5 =dest1.data[2];
             FTFL_FCCOB7 =dest1.data[0];

        if(1 == Flash_cmd_launch())
            return 2;  //写入命令错误
        }
    return 0;  //成功执行
}
我这边只能看返回值  但是返回值总是错的  不知从哪里开始改?
zz = Flash_writeDATA8(255,0,123);  zz我的定义是9  在线读也一直是9 求指导






欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2