本帖最后由 w282529350 于 2014-1-22 10:06 编辑
请问各位有没有遇到过这种情况?
芯片的型号为MK10DX256VLL7,我是在bootloader程序里面操作的用户程序区的flash,bootloader程序的区域为0x0--0x3FFF, 用户程序的区域为0x4000--0x3FFFF
flash的驱动函数是参照网上的k60例程,在bootloder里面擦除或者读写用户程序区的flash,但是在测试的过程中,发现偶尔擦除或者写用户程序flash的时候,芯片会出现复位的现象。并不是必出,只是偶尔出现复位的情况,而且都是在操作用户程序区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; //执行命令成功
}
一周热门 更多>