K10操作片上flash,芯片偶尔复位?(已解决)

2020-02-20 20:40发布

本帖最后由 w282529350 于 2014-1-22 10:06 编辑

请问各位有没有遇到过这种情况?

芯片的型号为MK10DX256VLL7,我是在bootloader程序里面操作的用户程序区的flash,bootloader程序的区域为0x0--0x3FFF, 用户程序的区域为0x4000--0x3FFFF

flash的驱动函数是参照网上的k60例程,在bootloder里面擦除或者读写用户程序区的flash,但是在测试的过程中,发现偶尔擦除或者写用户程序flash的时候,芯片会出现复位的现象。并不是必出,只是偶尔出现复位的情况,而且都是在操作用户程序区flash的时候,请问大家知不知道这是怎么一回事呀? 谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
w282529350
2020-02-21 16:21
本帖最后由 w282529350 于 2014-1-22 10:06 编辑
FSL_TICS_TIANZH 发表于 2014-1-21 15:49
感觉是你对flash的某个操作时间太长,然后引起复位,这个要具体看你的程序了. ...


再次感谢版主的回复,应该是某一个flash指令的执行过程被中断打断了,导致执行时间过长引起芯片的复位,但是具体哪个中断还没有确定,解决办法就是在flash命令执行的过程关闭中断
static uint_32 hw_flash_cmd_launch(void)
{
   _int_disable();                          //DisableInterrupts
    // 清除访问错误标志位和非法访问标志位
    FTFL_FSTAT = ACCERR | FPVIOL;
   
    // 启动命令
    FTFL_FSTAT = CCIF;

    // 等待命令结束
    while(!(FTFL_FSTAT & CCIF));
   _int_enable();                                //EnableInterrupts

    // 检查错误标志
    if(FTFL_FSTAT & (ACCERR | FPVIOL | MGSTAT0))
        return 1 ; //执行命令出错
  
    return 0; //执行命令成功
}

一周热门 更多>