#include <stdio.h>
#include <csl.h>
#include <csl_chip.h>
#include <csl_irq.h>
#include <csl_gpt.h>
#include <csl_uart.h>
#include "Uart_Function.h"
/* Reference start of interrupt vector table */
/* This symbol is defined in file, vectors.s55 */
extern void VECSTART(void);
/* Function/ISR prototypes */
interrupt void Timer0Isr(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, DestData[Counter]);
Counter++;
}
这个程序出现"Timer.c", line 62: error: expected an expression
这样的错误,该怎样修改呀,改了好几天都找不到原因,希望大神支招,小女子在这谢谢您了。 |