📄 dec5502_boottest.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 + -