STM8L151G6芯片开启IWDG出现不规则重启怎么办

2019-07-14 16:26发布

设计STM8L151G6芯片,开启IWDG,当没有信号采集时进入halt()模式。以降低功耗,程序如下,外部有个唤醒源,当无线接收到无线数据是,发出中断信号,用来唤醒单片机。现在问题是单片机出现不规则重启,还不是每次都这样。工作1-2个小时,会复位一次。http://www.stmcu.org/file:///C:/ ... %60RX%60ADQ%7DBSW11(8QX)FD.jpg,已经设置。halt(),狗停止。进之前也喂狗了!求高手解答

    tiM1->CR1 &= (~TIM1_CR1_CEN);

    TIM2->CR1 &= (uint8_t)(~TIM_CR1_CEN);
   

    TIM3->CR1 &= (~TIM_CR1_CEN);
    Timer3OVF = 0 ;
    SPI1->CR1 &= (~SPI_CR1_SPE);
    ADC_Cmd( ADC1, DISABLE );   
    DMA_GlobalCmd(DISABLE);      
    //-----------------------------------------切换到内部低速时钟
    CLK->SWCR |= CLK_SWCR_SWEN;
    CLK->SWR = CLK_SYSCLKSource_LSE ;   

    while( (CLK_SYSCLKSource_TypeDef)(CLK->SCSR&0x0F) != CLK_SYSCLKSource_LSE ) ;
    CLK->CKDIVR = CLK_SYSCLKDiv_1 ;
    CLK->SWCR &= (~CLK_SWCR_SWEN) ;
   
    //---------------------------------关闭不用的时钟
    CLK->CKENR1  = 0;
    CLK->CKENR2  = 0x04 ;     //RTC时钟一有效
    CLK->CKENR3  = 0;   
   
    //----------------------------------D port ini,按键中断输入、SI4432中断输入
    //GPIO_Init( GPIOB, KEY1|KEY2|KEY3, GPIO_Mode_In_PU_IT) ;
    GPIOB->CR1 |= 0x07 ;
    GPIOB->CR2 |= 0x07 ;  
         
     halt( ) ;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
小华同学
1楼-- · 2019-07-14 19:29
 精彩回答 2  元偷偷看……
freesea123
2楼-- · 2019-07-14 20:14
 担心晶振有问题的话,可以用示波器看看
Sabrina_cc
3楼-- · 2019-07-14 21:00
通过设置IWDG_HALT寄存器,在停机或活跃停机模式中独立看门狗可以正常工作。它可以唤醒该器件。  注:为了使用这一功能,避免看门狗错误复位,在执行HALT指令之前,独立看门狗溢出时间和重装看门狗必须设置正确。
东少2016
4楼-- · 2019-07-14 22:14
此种问题,需要排查下自己的代码,有没有在一定场景下跑挂,无法喂狗,要排查下代码和对应场景。
自动挂死的问题很多事代码 与预期不一致
安徽美能
5楼-- · 2019-07-14 23:36
选项字节 IWDG_HALT 设置成 Independant watchdog stopped in Halt/Active-halt mode 就可以了

一周热门 更多>