龙行天下-2039461 发表于 2014-4-16 10:31:08

STM8L 进入halt()模式,IWDG,停止后仍然复位

设计STM8L151G6芯片,开启IWDG,当没有信号采集时进入halt()模式。以降低功耗,程序如下,外部有个唤醒源,当无线接收到无线数据是,发出中断信号,用来唤醒单片机。现在问题是单片机出现不规则重启,还不是每次都这样。工作1-2个小时,会复位一次。https://www.stmcu.org.cn/file:///C:/Users/Administrator/AppData/Roaming/Tencent/Users/94081404/QQ/WinTemp/RichOle/F@A%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->PCKENR1  = 0;
    CLK->PCKENR2  = 0x04 ;     //RTC时钟一有效
    CLK->PCKENR3  = 0;  
   
    //----------------------------------D port ini,按键中断输入、SI4432中断输入
    //GPIO_Init( GPIOB, KEY1|KEY2|KEY3, GPIO_Mode_In_PU_IT) ;
    GPIOB->CR1 |= 0x07 ;
    GPIOB->CR2 |= 0x07 ;  
          
     halt( ) ;
 

龙行天下-2039461 发表于 2014-4-16 10:32:02

RE:STM8L 进入halt()模式,IWDG,停止后仍然复位

我自己怀疑是不是外部32768的晶振会不会,自己停震!

灰小子-1888763 发表于 2014-4-16 23:13:57

RE:STM8L 进入halt()模式,IWDG,停止后仍然复位

没定时喂狗?:o

dzc2001 发表于 2014-4-20 15:44:10

回复:STM8L 进入halt()模式,IWDG,停止后仍然复位

 担心晶振有问题的话,可以用示波器看看

有缘于你 发表于 2014-4-21 08:58:30

RE:STM8L 进入halt()模式,IWDG,停止后仍然复位

通过设置IWDG_HALT寄存器,在停机或活跃停机模式中独立看门狗可以正常工作。它可以唤醒该器件。注:为了使用这一功能,避免看门狗错误复位,在执行HALT指令之前,独立看门狗溢出时间和重装看门狗必须设置正确。

wkuang 发表于 2014-4-22 23:28:36

RE:STM8L 进入halt()模式,IWDG,停止后仍然复位

此种问题,需要排查下自己的代码,有没有在一定场景下跑挂,无法喂狗,要排查下代码和对应场景。
自动挂死的问题很多事代码 与预期不一致

扎克斯-353494 发表于 2016-8-19 11:13:34

选项字节 IWDG_HALT 设置成 Independant watchdog stopped in Halt/Active-halt mode 就可以了
页: [1]
查看完整版本: STM8L 进入halt()模式,IWDG,停止后仍然复位