#include <stdio.h>
#include <csl.h>
#include <csl_irq.h>
#include <csl_chip.h>
#include <csl_emifb.h>
#include <csl_irq.h>
static EMIFB_Config MyEmifbConfig =
{
EMIFB_GBLCTL_RMK
(
EMIFB_GBLCTL_EK2RATE_FULLCLK, //1 X EMIF input clock
EMIFB_GBLCTL_EK2HZ_CLK, //eclkout2 continue output during hold
EMIFB_GBLCTL_EK2EN_ENABLE, //eclkout2 enable output
EMIFB_GBLCTL_BRMODE_MRSTATUS, //bus request is memory access or refresh pending/in progress
EMIFB_GBLCTL_NOHOLD_ENABLE,
EMIFB_GBLCTL_EK1HZ_CLK, //eclkout1 continue output during hold
EMIFB_GBLCTL_EK1EN_ENABLE //eclkout1 enable output
),
0x22a28a22,
0xffffff1f,
0x22a28a22,
0x22a28a12,//CE3空间16位FIFO
EMIFB_SDCTL_DEFAULT,
EMIFB_SDTIM_DEFAULT,
EMIFB_SDEXT_DEFAULT,
0x00000002,
0x00000002,
0x00000002,
0x00000002
};
volatile Uint32* FIFO_FIRST_ADDRESS = (volatile Uint32 *) 0x6C000000;
#pragma DATA_SECTION(fifo_data,".off_ram");
unsigned int fifo_data[0x8000];
extern far void vectors();
void main()
{
//初始化CSL
CSL_init();
//配置EMIFB
EMIFB_config(&MyEmifbConfig);
//设置中断向量表地址
IRQ_setVecs(vectors);
//NMI使能
IRQ_nmiEnable();
IRQ_map(IRQ_EVT_EXTINT6,6);
IRQ_reset(IRQ_EVT_EXTINT6);
IRQ_enable(IRQ_EVT_EXTINT6);
IRQ_globalEnable();
while(1);
}
interrupt void c_int6()
{
for(i=0;i<0x8000;i++)
{
fifo_data[i]=&FIFO_FIRST_ADDRESS;
FIFO_FIRST_ADDRESS++;
}
volatile Uint32* FIFO_FIRST_ADDRESS = (volatile Uint32 *) 0x6C000000;
}