//////////////////////////////////////////////////////////////////////////////// /// 看门狗模块文件 /// /// /// 包含相关初始化功能 /// @file wdog_module.c /// @author gkl /// @date 2017-05-25创建 /// @version v0.1 //////////////////////////////////////////////////////////////////////////////// // 包含的头文件 #include "app_cfg.h" #include "gd32f4xx_gpio.h" #include #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,2u); //翻转电平喂狗 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(); }