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

📄 dec5502_boottest.c

📁 DSPBOOTLOADER程序
💻 C
字号:


/******************************************************************************/
/*  Copyright 2004 by SEED Electronic Technology LTD.                         */
/*  All rights reserved. SEED Electronic Technology LTD.                      */
/*  Restricted rights to use, duplicate or disclose this code are             */
/*  granted through contract.                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*----------------------------------------------------------------------------*/
/* MODULE NAME... GPT and Interrupt											  */
/* FILENAME...... DEC5502_BOOTTEST.c										  */
/* DATE CREATED.. Wed 6/20/2004 											  */
/* PROJECT....... 			  			  									  */
/* COMPONENT..... 															  */
/* PREREQUISITS.. 															  */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* DESCRIPTION:  															  */
/*   																		  */
/* This is an example of controlling led 5 of dec5502					  	  */
/*----------------------------------------------------------------------------*/
#include <csl.h>
#include <csl_pll.h>
#include <csl_emif.h>
#include <csl_chip.h>
#include <csl_irq.h>
#include <csl_gpt.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;

/* 定义宏来实现对GPIO口的访问和控制 */
#define  GPIODIR  	(*(volatile ioport Uint16*)(0x3400))
#define  GPIODATA 	(*(volatile ioport Uint16*)(0x3401))

Uint16 EventId0; 
Uint16 LEDMARK = 0;

/* Define and initialize the GPT module configuration structure  */
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
  ) 	
};


main()
{
	/*初始化CSL库*/	
    CSL_init();
    
    /*设置系统的运行速度为300MHz*/
    PLL_setFreq(1, 0xF, 0, 1, 3, 3, 0);
    
    /* 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();      
	
	/* Start Timer */
	GPT_start(hGpt);
	 
	/* Config GPIO7 in order to ignite led D5 */  
	GPIODIR |= 0x80;	// config the GPIO7 as output pin 
	
	/* EMIF为全EMIF接口 */
    CHIP_RSET(XBSR,0x0001);
    

   	/************** 进入系统死循环,等待进入定时器0中断 ************/
   	for(;;)
	{
	/* Enter system loop and waiting for interrupt */
	
	}		
}

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

/******************************************************************************\
* End of DEC5502_BOOTTEST.c
\******************************************************************************/

⌨️ 快捷键说明

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