查看: 2120|回复: 7

[求助] Kinetis K21 芯片不断重启,求分析。

[复制链接]

该用户从未签到

3

主题

15

帖子

0

注册会员

Rank: 2

积分
73
最后登录
2016-3-14
发表于 2016-2-4 11:56:03 | 显示全部楼层 |阅读模式
如题,Kinetis k21芯片不断重启,找不到原因。在导致重启的函数上下添加串口输出,或者是添加空循环后,可以恢复正常。如下:

/*!
*  @brief      初始化flash
*  @since      v5.0
*/
__RAMFUNC void eflash_init(void)
{
    uint32 i;
    // 清除Flash预读取缓冲区
    FMC_PFB0CR |= FMC_PFB0CR_S_B_INV_MASK;      //
    FMC_PFB1CR |= FMC_PFB0CR_S_B_INV_MASK;
    while(!(FTFL_FSTAT & FTFL_FSTAT_CCIF_MASK));    // 等待命令完成
    for(i=0;i<512;i++);
    FTFL_FSTAT =    (0
                     |  FTFL_FSTAT_CCIF_MASK        // 指令完成标志(写1清0)
                     |  FTFL_FSTAT_RDCOLERR_MASK    // 读冲突错误标志(写1清0)
                     |  FTFL_FSTAT_ACCERR_MASK      // 访问错误标志位(写1清0)
                     |  FTFL_FSTAT_FPVIOL_MASK      // 非法访问保护标志位(写1清0)
                    );
    for(i=0;i<256;i++);
}


不知道是什么原因,各位有没有碰到类似的问题?
我知道答案 目前已有7人回答
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2016-2-4 12:26:25 | 显示全部楼层
操作flash之前,关闭总中断!
flash操作是不能被中断打断的,否则会出现重启现象。
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

3

主题

15

帖子

0

注册会员

Rank: 2

积分
73
最后登录
2016-3-14
 楼主| 发表于 2016-2-4 13:58:25 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2016-2-4 12:26
操作flash之前,关闭总中断!
flash操作是不能被中断打断的,否则会出现重启现象。
...

多谢,不是这个原因,我试过了。有时候修改其他的文件也会导致不断重启,不一定是在EFLASH这个代码这个地方。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2016-2-4 17:03:00 | 显示全部楼层
harryjoy2008 发表于 2016-2-4 13:58
多谢,不是这个原因,我试过了。有时候修改其他的文件也会导致不断重启,不一定是在EFLASH这个代码这个地 ...

1优化等级调整下,最低。
2,检查看门狗关了没有。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2016-2-4 17:04:46 | 显示全部楼层
另外,检查的时候,把flash操作去掉,看看还进不进。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

15

帖子

0

注册会员

Rank: 2

积分
73
最后登录
2016-3-14
 楼主| 发表于 2016-2-4 18:03:44 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2016-2-4 17:04
另外,检查的时候,把flash操作去掉,看看还进不进。

优化等级已经是最低了,看门狗没有使用。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    373
    最后登录
    2023-8-16
    发表于 2016-2-5 09:12:01 | 显示全部楼层
    注意看一下进入的是哪个中断,复位后,复位寄存器输出一下,判断是哪个引起的复位。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2016-2-5 09:56:44 | 显示全部楼层
    harryjoy2008 发表于 2016-2-4 18:03
    优化等级已经是最低了,看门狗没有使用。

    "在导致重启的函数上下添加串口输出,或者是添加空循环后,可以恢复正常", 你说的这个句话, 导致重启的函数是什么?flash操作?
    添加空循环位置是什么?
    这句代码下面?
    while(!(FTFL_FSTAT & FTFL_FSTAT_CCIF_MASK));    // 等待命令完成
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-20 04:33 , Processed in 0.127214 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表