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

📄 timer.c

📁 STM32摄像头程序
💻 C
字号:
/*---------------------------------------------------------------------
					软定时器管理文件
-----------------------------------------------------------------------*/
#include <stm32f10x_lib.h>
#include "Timer.h"

/*定时时间*/

typedef struct
{
	u16  Time0;
}TimerStr;

TimerStr SysTimer[TIMER_NUMBER];
/*---------------------------------------------------------------
					定时器初始化函数
	说明:
	 	在系统初始化时调用一次
-----------------------------------------------------------------*/
void InitTaskTimer(void)
{
	u32 i;

	for(i = 0; i < TIMER_NUMBER; i++)
	{
		SysTimer[i].Time0 = 0xffff;
	}
}

/*--------------------------------------------------------------------------
					开启定时器函数
   说明:
		在系统启用一个定时器时调用
----------------------------------------------------------------------------*/
void SetTimer(u8 TimerNO, u16 Time1)
{
	SysTimer[TimerNO].Time0=Time1;
}

/*---------------------------------------------------------------------------
						关定时器函数
	说明:
	 	在系统关闭一个定时器时调用
-----------------------------------------------------------------------------*/

void KillTimer(u16  TimerNO)
{
	SysTimer[TimerNO].Time0=0xffff;
}


/*---------------------------------------------------------------------------
		说明:判断定时器是否打开,1为开,0
-----------------------------------------------------------------------------*/

bool TimerExist(u16 TimerNO)
{
	if(SysTimer[TimerNO].Time0 != 0xffff)
	{
		return TRUE;
	}
	return FALSE;
}

/*********************************************************************************************************
** 函数名称: Timer()
** 功能描述: 时钟节拍处理函数
** 输 入 :  无
** 输 出 :  无
** 全局变量:
** 调用模块:
** 说  明 :	 在时钟中断中调用
**********************************************************************************************************/

void Timer(void)
{
	u32 i;

	for(i=0;i<TIMER_NUMBER;i++)
	{
		if(SysTimer[i].Time0 != 0xffff)
		{

			if( SysTimer[i].Time0 )		// 多个时钟都在这里倒数
			{
				SysTimer[i].Time0--;
			}

		}
	}
	
}
/*********************************************************************************************************
** 函数名称: TimerOver
** 功能描述: 判断<事件>定时时间是否已到函数
** 输 入 :  TimerNO  事件号
** 输 出 :  返回1:<事件>定时时间已到	   返回0:<事件>定时时间还没到,或者 <事件>定时没有开启
** 全局变量:
** 调用模块:
** 说  明 :	 在要进行时间处理的地方调用
**********************************************************************************************************/
bool TimerOver(u8 TimerNO)
{
	if(SysTimer[TimerNO].Time0 != 0xffff)
	{
		if( 0 == SysTimer[TimerNO].Time0 )
		{
			return TRUE;
		}
	}

	return FALSE;
}

/*-----------------应用例子-------------------------------------------
		if(TimerOver(T_BEEP))	  // 定时时间到了没有,到了重装初始值,
		{
			SetTimer(9, 10);	  // 重装初始值(假若定时中断是1ms,那么这个事件就是10ms调用一次)
			// 蜂鸣器管理
			ManageBeep();		  // 调用 定时 事件
			
		}
---------------------------------------------------------------------*/
/////////////////////////////////////////////////////////////////////////////
//						 	End of file
/////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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