打印
[Kinetis]

KE06 Flash片内存储 程序初始化失败

[复制链接]
896|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wzh3782177|  楼主 | 2016-3-31 17:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
编译完程序,然后想flash写入数据时,初始化会返回失败值,即寄存器FTMRE_FCLKDIV_FDVLD一直读取的是1,求解!!!if((FTMRH->FCLKDIV & FTMRH_FCLKDIV_FDIVLD_MASK) &&
                  ((FTMRH->FCLKDIV & FTMRH_FCLKDIV_FDIV_MASK) != FTMRH_FCLKDIV_FDIV(clkDIV)))
                {
                        /* flash clock prescaler is loaded but with wrong value */
                        u16Err |= FLASH_ERR_INIT_FDIV;
                        return (u16Err);
                }

相关帖子

沙发
lxh1234| | 2016-8-13 11:32 | 只看该作者
FTMRE_FCLKDIV_FDVLD一直读取的是1;可以不管它,只要 FTMRH_FCLKDIV_FDIVLCK 是 0,就可以强制写入

void InitFLASH(void)
{
  if(FTMRH->FCLKDIV & FTMRH_FCLKDIV_FDIVLCK_MASK)
  {            // FTMRH_FCLKDIV_FDIVLCK为1,FDIV 值已锁定,不能更改。锁定位设置为高电平后,只有复位才能将该位清零并恢复 FDIV 字段在用户模式下的可写性
    NVIC_SystemReset();   //reset mcu, NVIC_SystemReset()见core_cm0plus.h   
  }
  FTMRH->FCLKDIV = (FTMRH->FCLKDIV & ~(FTMRH_FCLKDIV_FDIV_MASK)) | FTMRH_FCLKDIV_FDIV(BUS_CLK_HZ/1000000L - 1);// FTMRH_FCLKDIV_FDIVLD_MASK
  FTMRH->FCLKDIV  |= FTMRH_FCLKDIV_FDIVLCK_MASK;
  FLASH_Init(BUS_CLK_HZ);          // CPU flash read write initial,这条code可有可无!
}

使用特权

评论回复
板凳
lxh1234| | 2016-8-13 12:22 | 只看该作者
上面的程序没有考虑可重入性,如果有bootload程序的话,应用程序使用上面程序会不停复位,下面程序修改完毕,可重入也没有问题

void InitFLASH(void)
{
  if((FTMRH->FCLKDIV & FTMRH_FCLKDIV_FDIVLCK_MASK) &&
                  ((FTMRH->FCLKDIV & FTMRH_FCLKDIV_FDIV_MASK) != FTMRH_FCLKDIV_FDIV(BUS_CLK_HZ/1000000L - 1)))
  {                       // FDIV不等于预期分频 且 FTMRH_FCLKDIV_FDIVLCK==1,FDIV 值已锁定,不能更改。锁定位设置为高电平后,
                          //只有复位才能将该位清零并恢复 FDIV 字段在用户模式下的可写性
    NVIC_SystemReset();   //reset mcu, NVIC_SystemReset()见core_cm0plus.h   
  }
                          // 其余情况都重写FDIV分频值,只有FDIVLCK==1、FDIV == 预期分频值情况,写不进去,没有关系,分频对就可以。
  FTMRH->FCLKDIV = (FTMRH->FCLKDIV & ~(FTMRH_FCLKDIV_FDIV_MASK)) | FTMRH_FCLKDIV_FDIV(BUS_CLK_HZ/1000000L - 1);// FTMRH_FCLKDIV_FDIVLD_MASK
  FTMRH->FCLKDIV  |= FTMRH_FCLKDIV_FDIVLCK_MASK;
  FLASH_Init(BUS_CLK_HZ);          // CPU flash read write initial,这条code可有可无!
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝