////////////////////////////////////////////////////////////////////////////////

/// 看门狗模块文件
///
///
/// 包含相关初始化功能 
/// @file    wdog_module.c 
/// @author  gkl 
/// @date    2017-05-25创建
/// @version v0.1 

////////////////////////////////////////////////////////////////////////////////

// 包含的头文件
#include  "app_cfg.h"
#include "gd32f4xx_gpio.h"
#include  <includes.h>
#include "device_wdog.h"
/// 引脚初始化 
///
/// @param  none   
/// @param  none
/// @return none 
/// @note   修改日志
///         gkl与2017-05-26创建
///         LH于2022-05-31
static void init_dog()
{
  //PE5
  rcu_periph_clock_enable(RCU_GPIOE);
  gpio_mode_set(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_5);
  gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_25MHZ, GPIO_PIN_5);
}

//void GD32_reset()
//{
//  //软件复位GD32
//  NVIC_SystemReset();
////  GD32_RESET();
//}

//喂狗任务 
static  void task_feeddog ()
{
  while(1)
  {
    OSTimeDlyHMSM(0u,0u,0u,20u);
    //翻转电平喂狗
    gpio_bit_toggle(GPIOE, GPIO_PIN_5);
    
  }              
}

/// 创建喂狗任务 
///
/// @param  none   
/// @param  none
/// @return none 
/// @note   修改日志
///         gkl与2017-05-26创建
static OS_STK  task_feeddog_stk[TASK_FEEDDOG_STK_SIZE];
static  void  task_create_feeddog (void)
{ 

   CPU_INT08U  task_err;   
   CPU_INT08U  name_err;
   
   task_err = OSTaskCreateExt((void (*)(void *)) task_feeddog,           
		   (void           *) 0,
		   (OS_STK         *)&task_feeddog_stk[TASK_FEEDDOG_STK_SIZE - 1],
		   (INT8U           ) TASK_FEEDDOG_PRIO,                   
		   (INT16U          ) TASK_FEEDDOG_PRIO,
		   (OS_STK         *)&task_feeddog_stk[0],
		   (INT32U          ) TASK_FEEDDOG_STK_SIZE,
		   (void           *) 0,
		   (INT16U          )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));     
    #if (OS_TASK_NAME_EN > 0)
    OSTaskNameSet(TASK_FEEDDOG_PRIO, "task_feed_dog", &name_err);
    #endif

}

/// 看门狗模块初始化 
///
/// 初始化io管脚，创建任务
/// @param  none   
/// @param  none
/// @return none 
/// @note   修改日志
///         gkl与2017-05-26创建
void init_wdog_module()
{     
	// 初始化io管脚	
	init_dog();
	// 创建任务
	task_create_feeddog();
}






















