⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wdg.h

📁 这是一个ucos下看门狗的驱动程序
💻 H
字号:
/****************************************Copyright (c)**************************************************
**                                      
**                                          
**                                杭州央海软件科技有限公司
**
**                                 http://www.armgcc.com
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: wdg.H
** 创 建 人: 罗辉联
** 创建日期: 2006年5月10日
** 描    述: 该文件包含了WDG相关功能函数和函数原型
**
**--------------历史版本--------------------------------------------------------------------------------
** 创 建 人: 罗辉联
** 版    本: V1.0
** 日   期: 2006年5月10日
** 描   述: 原始版本
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#ifndef __WDG_H
#define __WDG_H

#include "rccu.h"
#include "cpu_cfg.h"

    #ifdef __cplusplus
    extern "C" {
    #endif

#if EN_ARM_WDG > 0		//决定是否编译该文件

/************************************** 宏定义,常量定义 ******************************************/

/**************************************  枚举类型定义  *******************************************/

/************************************** 结构体类型定义  ******************************************/

/********************************** 全局外部函数原型声明 *****************************************/


/*********************************************************************************************************
;** 函数名称: WDG_Enable
;** 功能描述: Enable the Watchdog Mode
;** 
;** 参    数: 无
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void WDG_Enable(void)
{
  	WDG_CR = 0x01;
}

/*********************************************************************************************************
;** 函数名称: WDG_Enable
;** 功能描述: Enable the Watchdog Mode
;** 
;** 参    数: 无
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void WDG_Disable(void)
{
  WDG_CR &= ~0x01;
}
/*********************************************************************************************************
;** 函数名称: WDG_CounterRefresh
;** 功能描述: 更新Watchdog Counter,否则系统将重启
;** 
;** 参    数: 无
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void WDG_CounterRefresh ( void )
{
  //write the first value in the key register
  WDG_KR = 0xA55A;
  //write the consecutive value
  WDG_KR = 0x5AA5;
}

/*********************************************************************************************************
;** 函数名称: WDG_PrescalerConfig
;** 功能描述: Set the counter prescaler value.Divide the counter clock by (Prescaler + 1)
;** 
;** 参    数: prescaler:Prescaler data value (8 bit)
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void WDG_PrescalerConfig (UWORD8 prescaler)
{
  WDG_PR = prescaler;
}
/*********************************************************************************************************
;** 函数名称: WDG_CounterReloadUpdate
;** 功能描述: Update the counter pre-load value.
;** 
;** 参    数: preload_value:Pre-load data value (16 bit)
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void WDG_CounterReloadUpdate(UWORD16 preload_value )
{
  WDG_VR = preload_value;
}

/*********************************************************************************************************
;** 函数名称: WDG_PeriodValueConfig
;** 功能描述: 根据定时时间设置prescaler和counter reload 值
;** 
;** 参    数: time:Amount of time (us) needed
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void WDG_PeriodValueConfig (UWORD32 time);
/*********************************************************************************************************
** 函数名称: wdg_init
** 功能描述: watchdog 初始化,系统复位时间大约0.8ms
** 
** 参    数: None 
**          
** 返 回 值: None
**         
** 作   者: 罗辉联
** 日   期: 2006年6月21日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 罗辉联
** 日   期: 2006年6月21日
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void wdg_init(void);
/*********************************************************************************************************
;** 函数名称: WDG_WatchdogStart
;** 功能描述: 使用WDG的看门狗功能,根据装载的计数值设置复位门限
;** 
;** 参    数: reset_time:看门狗复位时间值
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void WDG_WatchdogStart(UWORD32 reset_time);

/*********************************************************************************************************
;** 函数名称: WDG_TimerStart
;** 功能描述: 使用WDG的定时器功能,根据装载的计数值立即启动定时器
;** 
;** 参    数: 无
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void WDG_TMStart(UWORD32 time);
/*********************************************************************************************************
;** 函数名称: WDG_TMStop
;** 功能描述: 停止WDG的定时器
;** 
;** 参    数: 无
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void WDG_TMStop(void);
/*********************************************************************************************************
;** 函数名称: WDG_CounterfConfig
;** 功能描述: 当WDG工作在定时模式时,停止或启动watchdog定时计数器
;** 
;** 参    数: preload_value:Pre-load data value (16 bit)
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void WDG_CounterfConfig (CONFIG_STATUS_T new_status)
{
  if (new_status == ENABLE) 
  	WDG_CR  = 0x0002; 
  else 
  	WDG_CR &= ~0x0002;
}

/*********************************************************************************************************
;** 函数名称: WDG_ECITConfig
;** 功能描述: Enable or Disable the end of count interrupt
;** 
;** 参    数: new_status: ENABLE or DISABLE
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void WDG_ECITConfig(CONFIG_STATUS_T new_status)
{
  if (new_status == ENABLE) 
  	WDG_MR |= 0x0001; 
  else 
  	WDG_MR &= ~0x0001;
}


/*********************************************************************************************************
;** 函数名称: WDG_ECFlagClear
;** 功能描述: 当WDG不在WDG模式时,通过该函数清除计数结束标志
;** 
;** 参    数: 无
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void WDG_ECFlagClear (void)
{
  WDG_SR = 0x0000;
}

/*********************************************************************************************************
;** 函数名称: WDG_GetECFlag
;** 功能描述: 当WDG不在WDG模式时,通过该函数获得WDG定时器是否计数结束
;** 
;** 参    数: 无
;**
;** 返 回 值: WDG EC位值
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline UWORD16 WDG_GetECFlag(void)
{
  return WDG_SR;
}



#endif  //EN_ARM_WDG > 0

    #ifdef __cplusplus
    }
    #endif


#endif // __WDG_H

/****************************************end of file*******************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -