📄 main1.c
字号:
#include <stdio.h>
#include <csl.h>
#include <csl_chip.h>
#include <csl_pll.h>
#include <csl_emif.h>
#include <csl_i2c.h>
#include <csl_dma.h>
#include <csl_irq.h>
#include <csl_gpio.h>
/* Reference start of interrupt vector table */
/* This symbol is defined in file, vectors.s55 */
int *dstaddr, *Uaddr,*Vaddr;
unsigned int dataconst=40000;
extern void VECSTART(void);
void delay();
interrupt void INT1Isr(void); /* INT1 interrupt */
interrupt void dmaRcvIsr(void); /* DMA receive interrupt */
extern DMA_Handle hDMArcv;
void main()
{
CSL_init();
CHIP_RSET(XBSR,0x0a01);
// old_intm=IRQ_globalDisable();
//chip_init();
//emif_init();
i2c_init();
// dma_init();
GPIO_RSET(IODIR,0xFF);
GPIO_RSET(IODATA,0x0);
IRQ_setVecs((Uint32)(&VECSTART)); /* set IVPD/IVPH to start of interrupt vector table */
IRQ_clear(IRQ_EVT_INT1); /* clear any pending interrupts for INT1 */
IRQ_plug(IRQ_EVT_INT1,&INT1Isr); /* place INT1 interrupt service addresses at associate vector */
IRQ_enable(IRQ_EVT_INT1); /* enable INT1 interrupt in IER2 register */
IRQ_globalEnable();
GPIO_RSET(IODATA,0x08);
while(1)
{;}
}
interrupt void INT1Isr(void)
{
Uint16 temp;
Uint16 intflag;
Uint16 i;
GPIO_RSET(IODATA,0x0); //该中断是FIFO的读中断,停止对 FIFO的写操作
intflag = CHIP_FGET(IFR1,INT1)|0x0001;
if(intflag==0x0001)
{
// DMA_start(hDMArcv); /* enable DMA receiver*/
// while(!(DMA_FGETH(hDMArcv,DMACSR,BLOCK))) //one block(one frame of image) has transferred
{;}
// DMA_stop(hDMArcv);
dstaddr=(int*)0x28000;
Uaddr=(int*)0x310000;
Vaddr=(int*)0x320000;
for(i=0;i<64584;i++)
{
temp = dstaddr[i];
dstaddr[i] = (temp>>8);
}
IRQ_enable(IRQ_EVT_INT1);
IRQ_globalEnable();
// IRQ_globalRestore(old_intm);
GPIO_RSET(IODATA,0x08);
return;
}
else
{
IRQ_globalEnable();
GPIO_RSET(IODATA,0x08);
return;
}
}
void delay()
{
Uint32 j = 0,k = 0;
for(j = 0;j<0x8;j++)
{
for(k= 0;k<0x0f;k++)
{}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -