这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » GD32 » 【GD31230G-Start】点灯(三)

共1条 1/1 1 跳转至

【GD31230G-Start】点灯(三)

高工
2015-04-07 23:12:45     打赏
这次我们使用点灯的防范验证看门狗的工作情况。 实现内容是这样的: 上电后,我们先让LED点亮。持续0.5s后熄灭。然后配置看门狗,让看门狗开始工作。

如果到了一定的时间,灯还是灭的话,说明看门狗没有工作,没有把MCU复位。如果LED闪烁,则说明这段时间看门狗在不停地复位MCU。

实验的硬件依旧是GD32120G-Start。

实验代码如下:
int main(void)
{    
//    NVIC_InitPara NVIC_InitStructure;
//    EXTI_InitPara EXTI_InitStructure;
//    
    /* Enable the GPIO_LED Clock */
    RCC_AHBPeriphClock_Enable( RCC_AHBPERIPH_GPIOA , ENABLE );
    
    //配置GPIO
    {
          GPIO_InitPara GPIO_InitStructure; 
        
          /* Configure the GPIO_LED pin */
          GPIO_InitStructure.GPIO_Pin     = GPIO_PIN_1;
          GPIO_InitStructure.GPIO_Mode    = GPIO_MODE_OUT;
          GPIO_InitStructure.GPIO_OType   = GPIO_OTYPE_PP;
          GPIO_InitStructure.GPIO_PuPd    = GPIO_PUPD_NOPULL;
          GPIO_InitStructure.GPIO_Speed   = GPIO_SPEED_50MHZ;
          GPIO_Init( GPIOA , &GPIO_InitStructure );
          
          GPIO_InitStructure.GPIO_Pin = GPIO_PIN_0;
          GPIO_InitStructure.GPIO_Mode = GPIO_MODE_IN;
    
          GPIO_Init( GPIOA , &GPIO_InitStructure );
    }
    
        if (SysTick_Config(SystemCoreClock / 1000))
    { 
        /* Capture error */ 
        while (1);
    }

    
    GPIO_SetBits(GPIOA,GPIO_PIN_1);
    Delay(500);
    GPIO_ResetBits(GPIOA,GPIO_PIN_1);
    //Delay(1000);
    WWDG_DeInit();

    IWDG_SetPrescaler(IWDG_PRESCALER_256);
    IWDG_SetReloadValue(0x0FFF);
        
    IWDG_Enable();
    while(1)
    {

    }
}
    


这时我们会看到LED在以一个固定的频率在闪烁。说明看门狗在不停地将MCU复位。 如果我们在最后那个while(1)里边加入这样两行代码: IWDG_ReloadCounter(); //喂狗,重装载参数计数器写入重装载值。 Delay(100);

此时我们就会看见LED保持熄灭状态。说明这个时候MCU没有被复位。


另外,上面的一些代码参考我以前使用STM32F407板子写的博客,有意者阅知:http://www.cnblogs.com/zyqgold/archive/2013/05/23/STM32F4-Discovery.html

STM32跟GD32真的太像了



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]