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

📄 timer.c

📁 这是个TI公司的TMS320VC5502的专门用的usb通讯程序
💻 C
字号:
/****************************************************************************************/
//
// Filename:  	timer.c
// Function:	Config timer 0 to control LED 5
//
/****************************************************************************************/

#include <stdio.h>
#include <csl.h>
#include <csl_irq.h>
#include <csl_gpt.h>

unsigned int TIMMARK = 0;

/* 定时器启动标志 */
unsigned int TimerRunMark = 0;

#define  GPIODIR  	(*(volatile ioport Uint16*)(0x3400))
#define  GPIODATA 	(*(volatile ioport Uint16*)(0x3401))

GPT_Handle MyhGpt;
/****************************************************************************/
/*																    		*/
/* 函数定义:void Config_timer()							   				*/
/* 功    能:配置定时器               										*/
/*																			*/
/* 入口参数:无																*/
/* 出口参数:无																*/
/*																			*/
/****************************************************************************/
extern void Config_timer(void)
{
	GPT_Config  MyGptConfig = {
		0, 							//Emulation management register
		0,		 					//GPIO interrupt control register
		0,	 						//GPIO enable register
		0,		 					//GPIO direction register
		0,		 					//GPIO data register
		0xB9EF, 					//Timer period register 1
		0x05F5,	 					//Timer period register 2
		0,							//Timer period register 3
		0, 							//Timer period register 4
		GPT_GPTCTL1_RMK(			//Timer control register 1
  		GPT_GPTCTL1_TIEN_NOT_GATED,
  		GPT_GPTCTL1_CLKSRC_VBUS,
  		GPT_GPTCTL1_ENAMODE_CONTINUOUS,
  		GPT_GPTCTL1_PWID_INACTIVE_1CYCLE,
  		GPT_GPTCTL1_CP_CLOCK_MODE,
  		GPT_GPTCTL1_INVIN_DONT_INVERT_OUTPUT,
  		GPT_GPTCTL1_INVOUT_DONT_INVERT_OUTPUT
  		), 			
	GPT_GPTCTL2_RMK(			//Timer control register 2
  		GPT_GPTCTL2_TIEN_NOT_GATED,
  		GPT_GPTCTL2_CLKSRC_VBUS,
  		GPT_GPTCTL2_ENAMODE_CONTINUOUS,
  		GPT_GPTCTL2_PWID_INACTIVE_1CYCLE,
  		GPT_GPTCTL2_CP_CLOCK_MODE,
  		GPT_GPTCTL2_INVIN_DONT_INVERT_OUTPUT,
  		GPT_GPTCTL2_INVOUT_DONT_INVERT_OUTPUT
  		), 			
	GPT_GPTGCTL1_RMK(			//Global timer control register
  		GPT_GPTGCTL1_PSC34_DEFAULT,
  		GPT_GPTGCTL1_TIMMODE_DEFAULT,
  		GPT_GPTGCTL1_TIM34RS_NOT_IN_RESET,
  		GPT_GPTGCTL1_TIM12RS_NOT_IN_RESET
  		) 	
	};
 	/* Write configuration structure values to Timer control regs */ 
	GPT_config(MyhGpt, &MyGptConfig); 
	GPT_stop(MyhGpt);
}

/****************************************************************************/
/*																    		*/
/* 函数定义:void Timer_start()				   								*/
/* 功    能:启动定时器               									    */
/* 入口参数:无																*/
/* 出口参数:无																*/
/*																			*/
/****************************************************************************/
extern void Timer_start(void)
{
	/* Start Timer */
	GPT_start(MyhGpt);	
	TimerRunMark = 1;			// 表明定时器已经启动
}

/****************************************************************************/
/*																    		*/
/* 函数定义:void Timer_stop()							   					*/
/* 功    能:停止定时器               										*/
/*																			*/
/* 入口参数:无																*/
/* 出口参数:无																*/
/*																			*/
/****************************************************************************/
extern void Timer_stop(void)
{
	if(TimerRunMark == 1)	// 如果定时器已经启动,则停止
	{
 		GPT_stop(MyhGpt);
 	}
}

/****************************************************************************/
/*																    		*/
/* 函数定义:void Config_led()							   					*/
/* 功    能:将指示灯D5所对应的GPIO口配置成输出               				*/
/*																			*/
/* 入口参数:无																*/
/* 出口参数:无																*/
/*																			*/
/****************************************************************************/
extern void Config_led(void)
{
	GPIODIR = 0x80;	// config the GPIO7 as output pin 
}

/****************************************************************************/
/*																    		*/
/* 函数定义:void Open_led()							   					*/
/* 功    能:打开指示灯D5               									*/
/*																			*/
/* 入口参数:无																*/
/* 出口参数:无																*/
/*																			*/
/****************************************************************************/
extern void Open_led(void)
{
	GPIODATA = 0x80;		/* 打开指示灯D5 */
}

/****************************************************************************/
/*																    		*/
/* 函数定义:void Close_led()							   					*/
/* 功    能:关闭指示灯D5               									*/
/*																			*/
/* 入口参数:无																*/
/* 出口参数:无																*/
/*																			*/
/****************************************************************************/
extern void Close_led(void)
{
	GPIODATA = 0x00;		/* 关闭指示灯D5 */
}

/*定时器0的中断程序*/
extern interrupt void Timer0Isr(void)
{
  	if(TIMMARK == 0)
  	{   
  		GPIODATA = 0x00;		/* 关闭指示灯D5 */
  		TIMMARK = 1;
  	}
  	else
  	{   
  		GPIODATA = 0x80;		/* 打开指示灯D5 */
  		TIMMARK = 0;
  	}
}

/**********************************************************************************/
/*	No	more																	  */
/**********************************************************************************/

⌨️ 快捷键说明

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