这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 企业专区» 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 跳转至

回复

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