wangcharley 发表于 2021-10-18 10:34:42

【程序跑飞】大家用FM33LC026N这个片子有遇到死机的情况吗??

如题,大家用这个片子有遇到四级的情况吗,

一般出现在上电的时候,上电以后进入休眠状态就没有办法唤醒了,需要断电再上电才能恢复正常,偶尔出现,不是每次都出,


wangpeng 发表于 2021-10-19 18:30:36

之前又客户遇到过,主要是软件配置问题,您可以用参考例程试一下;
或者把您这边的软件配置贴出来,看看是哪里的问题?

还有程序当中有没有低功耗的休眠程序,休眠模式下程序怎么配置的,朽休眠下的时钟用的是片上的RCLP还是外部的32k;
另外也可以示波器监测一下时钟输出是否正常

wangcharley 发表于 2021-10-20 09:46:52

wangpeng 发表于 2021-10-19 18:30
之前又客户遇到过,主要是软件配置问题,您可以用参考例程试一下;
或者把您这边的软件配置贴出来,看看是 ...

程序启动了 IWDT 跟低功耗定时器以后,死机的概率就比较高,关掉独立看门狗跟低功耗定时器以后出现死机的概率就几乎可以忽略了,
低功耗定时器是用来唤醒 MCU,喂IWDT,因为 IWDT 不能唤醒 MCU
下面是看门狗初始化跟休眠程序
// IWDT 初始化
void MF_IWDT_Init(void)
{
    FL_IWDT_InitTypeDef    IWDT_InitStruct;

    IWDT_InitStruct.overflowPeriod = FL_IWDT_PERIOD_4000MS;
    IWDT_InitStruct.iwdtWindows = 0;
   
    FL_IWDT_EnableFreezeWhileSleep(IWDT);

    FL_IWDT_Init(IWDT, &IWDT_InitStruct);

    /*Start Of Interrupt Initialization*/
    //FL_IWDT_ClearFlag_EnterWindow(IWDT);
    //FL_IWDT_EnableIT_EnterWindow(IWDT);
    /*End Of Interrupt Initialization*/
}
/**
* @briefLPTIM32 Initialization function
* @paramvoid
* @retval None
*/
void MF_LPTIM32_Init(void)
{

    /*IO CONFIG*/
    FL_LPTIM32_InitTypeDef    defaultInitStruct;

    defaultInitStruct.clockSource = FL_RCC_LPTIM32_CLK_SOURCE_LPOSC;      /*<! 32KHz */
    defaultInitStruct.prescalerClockSource = FL_LPTIM32_CLK_SOURCE_INTERNAL;
    defaultInitStruct.prescaler = FL_LPTIM32_PSC_DIV2;
    defaultInitStruct.autoReload = 30000;
    defaultInitStruct.mode = FL_LPTIM32_OPERATION_MODE_NORMAL;
    defaultInitStruct.onePulseMode = FL_LPTIM32_ONE_PULSE_MODE_CONTINUOUS;
    defaultInitStruct.countEdge = FL_LPTIM32_ETR_COUNT_EDGE_RISING;
    defaultInitStruct.triggerEdge = FL_LPTIM32_ETR_TRIGGER_EDGE_RISING;

    FL_LPTIM32_Init(LPTIM32,&defaultInitStruct );


    FL_LPTIM32_EnableIT_Update(LPTIM32 );

    FL_LPTIM32_Enable(LPTIM32);
}
// 休眠程序

void gotoSleep()
{

    if (FL_RTC_IsEnabledIT_Second(RTC))
    {
      FL_RTC_DisableIT_Second(RTC);
      //NVIC_DisableIRQ(RTC_IRQn);
    }
   
    EEP_POWER_OFF();
    FL_LCD_Disable(LCD);
    FL_RMU_PDR_Enable(RMU);
    FL_RMU_BORPowerDown_Disable(RMU);
    FL_PMU_SetLowPowerMode(PMU,FL_PMU_POWER_MODE_SLEEP_OR_DEEPSLEEP);
    __WFI();
    if (functionStatus.sleep!=0)
      FL_LCD_Enable(LCD);
}
/**
* @briefWWDT Initialization function
* @paramvoid
* @retval None
*/
void myWWDTInit()
{
    FL_WWDT_InitTypeDef myWWDTInitStruc;
    myWWDTInitStruc.overflowPeriod = FL_WWDT_PERIOD_1024CNT;
    FL_WWDT_Init(WWDT,&myWWDTInitStruc);
}



// 喂狗程序
void cleanWDT()
{
    uint32_t dwdtcount;
    dwdtcount = FL_WWDT_ReadCounter(WWDT);
    if (dwdtcount>=512)
      FL_WWDT_ReloadCounter(WWDT);
    dwdtcount = FL_IWDT_ReadCounter(IWDT);
    if (dwdtcount>=512)
      FL_IWDT_ReloadCounter(IWDT);
}

顾博文 发表于 2021-10-21 08:34:58

wangcharley 发表于 2021-10-20 09:46
程序启动了 IWDT 跟低功耗定时器以后,死机的概率就比较高,关掉独立看门狗跟低功耗定时器以后出现死机的 ...

程序中加点灯,简化程序,不推荐功能还没确定,就搞自己的一套代码,尽量用我们例程的代码,功能调通了在去修改自己代码。 硬件是不是正确,在QQ或微信群找我们的硬件工程师看下。

zlx 发表于 2022-6-2 15:58:57

顾博文 发表于 2021-10-21 08:34
程序中加点灯,简化程序,不推荐功能还没确定,就搞自己的一套代码,尽量用我们例程的代码,功能调通了在 ...

qq或微信群在哪能进

顾博文 发表于 2022-6-6 08:56:51

zlx 发表于 2022-6-2 15:58
qq或微信群在哪能进

找代理或者销售
页: [1]
查看完整版本: 【程序跑飞】大家用FM33LC026N这个片子有遇到死机的情况吗??