【程序跑飞】大家用FM33LC026N这个片子有遇到死机的情况吗??
如题,大家用这个片子有遇到四级的情况吗,一般出现在上电的时候,上电以后进入休眠状态就没有办法唤醒了,需要断电再上电才能恢复正常,偶尔出现,不是每次都出,
之前又客户遇到过,主要是软件配置问题,您可以用参考例程试一下;
或者把您这边的软件配置贴出来,看看是哪里的问题?
还有程序当中有没有低功耗的休眠程序,休眠模式下程序怎么配置的,朽休眠下的时钟用的是片上的RCLP还是外部的32k;
另外也可以示波器监测一下时钟输出是否正常
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);
}
wangcharley 发表于 2021-10-20 09:46
程序启动了 IWDT 跟低功耗定时器以后,死机的概率就比较高,关掉独立看门狗跟低功耗定时器以后出现死机的 ...
程序中加点灯,简化程序,不推荐功能还没确定,就搞自己的一套代码,尽量用我们例程的代码,功能调通了在去修改自己代码。 硬件是不是正确,在QQ或微信群找我们的硬件工程师看下。 顾博文 发表于 2021-10-21 08:34
程序中加点灯,简化程序,不推荐功能还没确定,就搞自己的一套代码,尽量用我们例程的代码,功能调通了在 ...
qq或微信群在哪能进 zlx 发表于 2022-6-2 15:58
qq或微信群在哪能进
找代理或者销售
页:
[1]