120 lines
2.3 KiB
C
120 lines
2.3 KiB
C
|
////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
/// 看门狗模块文件
|
|||
|
///
|
|||
|
///
|
|||
|
/// 包含相关初始化功能
|
|||
|
/// @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();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|