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

📄 timer.c

📁 DSP开发可以用来看外设情况的程序
💻 C
字号:

/****************************************************************/
/*	文件名:		Timer.c 										*/
/* 	功能:		定义配置定时器函数和定时器中断函数				*/
/*  设计者:		陈湘和											*/
/*  设计日期:	10/20/2004										*/
/****************************************************************/

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

#include "Esam_Function.h"

/* Function/ISR prototypes */
interrupt void Timer0Isr(void);

/* Reference start of interrupt vector table   */
/* This symbol is defined in file, vectors.s55 */
extern void VECSTART(void);

/* Create a TIMER_Handle object for use with TIMER_open */
GPT_Handle 	 hGpt;
Uint16 Counter;
Uint16 EventId0; 		// 定时器0所对应的事件ID号

/****************************************************************/
/* Define and initialize the GPT module configuration structure */
/* Input fast peripheral clock is 100MHz 						*/
/* Generate character interval interrupt 						*/
/*--------------------------------------------------------------*/
/* 10etu		0x19708		1.042ms								*/
/* 12etu		0x1E870		1.250ms								*/
/* 14etu		0x239D8		1.459ms								*/
/* 20etu		0x32E10		2.084ms								*/
/* 40etu		0x65C20		4.168ms								*/
/****************************************************************/
GPT_Config  MyGptConfig = {
0, 							//Emulation management register
0,		 					//GPIO interrupt control register
0,	 						//GPIO enable register
0,		 					//GPIO direction register
0,		 					//GPIO data register
//0x39D8, 					//Timer period register 1		(主频为200MHz)
//0x0002,	 				//Timer period register 2
0x56C4, 					//Timer period register 1		(主频为300MHz)
0x0003,	 					//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_IN_RESET,
  GPT_GPTGCTL1_TIM12RS_IN_RESET
  ) 	
};

/****************************************************************/
/*	函数名:		Config_Timer() 									*/
/* 	功能:		配置一个字符发送周期的定时器					*/
/****************************************************************/
extern void Config_Timer(void)
{
	/* Set IVPH/IVPD to start of interrupt vector table */
	IRQ_setVecs((Uint32)(&VECSTART));
	 
	/* Temporarily disable all maskable interrupts */
	IRQ_globalDisable();   
	
	/* Open Timer 0, set registers to power on defaults */
	/* And return handle of Timer 0 */
	hGpt = GPT_open(GPT_DEV0, GPT_OPEN_RESET);
	
	/* Get Event Id associated with Timer 0, for use with */
	/* CSL interrupt enable functions.                    */         
	EventId0 = GPT_getEventId(hGpt);
	
	/* Clear any pending Timer interrupts */
	IRQ_clear(EventId0);
	
	/* Place interrupt service routine address at */
	/* associated vector location */
	IRQ_plug(EventId0,&Timer0Isr);
	
	/* Write configuration structure values to Timer control regs */ 
	GPT_config(hGpt, &MyGptConfig); 
	
	/* Enable Timer interrupt */
	IRQ_enable(EventId0);             
	
	/* Enable all maskable interrupts */
	IRQ_globalEnable();      

}

/********************************************************************/
/*	函数名:		Timer0Isr() 										*/
/* 	功能:		当定时时间到,发送一个命令字符并且字符发送计数器加1	*/
/********************************************************************/
interrupt void Timer0Isr(void)
{

    UART_RSET(URTHR, Command[Counter]);
    Counter++;	
}

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

⌨️ 快捷键说明

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