KL25Z128的Flash擦写操作

2019-07-15 17:51发布

下面是我的code
  1. unsigned char
  2. Flash_SectorErase(uint_32 *FlashPointer)
  3. {
  4.     unsigned char Return = Flash_OK;
  5.     uint_32 FlashPtr = (uint_32)FlashPointer;
  6.     /* Allocate space on stack to run flash command out of SRAM */
  7.     /* wait till CCIF is set*/
  8.     while (!(FTFL_FSTAT & FTFL_FSTAT_CCIF_MASK))
  9.     {;}
  10.    
  11.     /* Write command to FCCOB registers */
  12.     FTFL_FCCOB0 = FlashCmd_SectorErase;
  13.     FTFL_FCCOB1 = (uint_8)(FlashPtr >> 16);
  14.     FTFL_FCCOB2 = (uint_8)((FlashPtr >> 8) & 0xFF);
  15.     FTFL_FCCOB3 = (uint_8)(FlashPtr & 0xFF);
  16. FTFL_FSTAT |= 0x80;   
  17.     /* wait for command completion */
  18. while (!(FTFL_FSTAT & FTFL_FSTAT_CCIF_MASK)) {};
  19. }
复制代码每次运行到:FTFL_FSTAT |= 0x80;
   不管我给的的参数是多少都没用,MCU肯定 复位,求高手指导!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
LY0206
1楼-- · 2019-07-15 21:34
代码是否拷贝到RAM中执行了?
我有一车切糕
2楼-- · 2019-07-15 22:07
LY0206 发表于 2015-1-26 17:05
代码是否拷贝到RAM中执行了?

没有,因为我有个代码拷贝到RAM中的历程,
  1. flashCmdSize = 0x200;
  2.     flashCmdFr = (UINT32)FlashCommandSequence - 1;
  3.     flashCmdTo = (UINT32)__ram_for_command_sequence_func;
  4.     for(i=0;i < flashCmdSize;i++)
  5.     {
  6.        value = READ8(flashCmdFr);
  7.        flashCmdFr++;
  8.        WRITE8(flashCmdTo, value);
  9.        flashCmdTo++;
  10.     }
  11.     pFlashCommandSequence = (pFLASHCOMMANDSEQUENCE)((UINT8 *)__ram_for_command_sequence_func + 1);
复制代码这样的话,在For循环里面也会复位MCU,我不知道为什么。。。
我想把2个Demo合并成一个,但他们的.ld文件里面的配置不一样,所以会有这种问题。。
LY0206
3楼-- · 2019-07-16 03:47
 精彩回答 2  元偷偷看……

一周热门 更多>