MW22-02A/APP/Device/device_Other/device_wdog.c

120 lines
2.3 KiB
C
Raw Normal View History

2025-05-21 01:55:40 +00:00
////////////////////////////////////////////////////////////////////////////////
/// 看门狗模块文件
///
///
/// 包含相关初始化功能
/// @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,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();
}