📄 main.c
字号:
#include <csl_dma.h>
#include <csl_irq.h>
#include <csl_gpio.h>
#include <stdio.h>
#include <csl.h>
#include <csl_mcbsp.h>
/* Reference start of interrupt vector table */
/* This symbol is defined in file, vectors.s55 */
int *Uaddr,*Vaddr;
Uint16 *dstaddr,*dstaddr1;
unsigned int dataconst=40000;
extern void VECSTART(void);
void delayS();
void delayL();
extern void RFSendPacket(Uint16 *txBuffer, Uint16 size);
extern void initSPI();
interrupt void INT1Isr(void); /* INT1 interrupt */
interrupt void dmaRcvIsr(void); /* DMA receive interrupt */
extern DMA_Handle hDMAfifo;
volatile int oneframe=0;
void main()
{
CSL_init();
CHIP_RSET(XBSR,0x0a01); /*EMIF为全EMIF接口*/
initPLL(); /*设置系统的运行速度为144MHz*/
initGPIO();
// initI2C();
initEMIF();/*初始化DSP的外部SDRAM*/
initSPI();
initDMA();
// init_cc();
delayS();
GPIO_RSET(IODIR,0xFF);
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_clear(IRQ_EVT_DMAC0);
IRQ_plug(IRQ_EVT_INT1,&INT1Isr); /* place INT1 interrupt service addresses at associate vector */
IRQ_plug(IRQ_EVT_DMAC0,&dmaRcvIsr);
IRQ_enable(IRQ_EVT_INT1); /* enable INT1 interrupt in IER2 register */
IRQ_enable(IRQ_EVT_DMAC0);
IRQ_globalEnable();
GPIO_RSET(IODATA,0x40);
for(;;)
{
Uint16 i,j,k;
if(oneframe==1)
{
dstaddr=(Uint16 *)0x30000;
dstaddr1=(Uint16 *)0x40000;
k=0;
Uaddr = (int *)0x120000;
for(i=0;i<128;i++)
{
for(j=0;j<256;j++)
{
dstaddr1[k++]=(dstaddr[i*256+j]>>8);
}
for(j=0;j<256;j++)
{
dstaddr1[k++]=(dstaddr[i*256+j+32768]>>8);
}
}
RFSendPacket(dstaddr1, 44); //176/4=44;
for(i=0;i<32768;i++)
{
Uaddr[i] = 128;
}
;
}
}
}
interrupt void INT1Isr(void)
{
Uint16 intflag;
GPIO_RSET(IODATA,0x0); //该中断是FIFO的读中断,停止对FIFO的写操作
intflag = CHIP_FGET(IFR1,INT1)|0x0001;
if(intflag==0x0001)
{
DMA_start(hDMAfifo); /* enable DMA receiver*/
IRQ_enable(IRQ_EVT_INT1);
IRQ_globalEnable();
// IRQ_globalRestore(old_intm);
// GPIO_RSET(IODATA,0x08);
return;
}
else
{
IRQ_globalEnable();
// GPIO_RSET(IODATA,0x08);
return;
}
}
interrupt void dmaRcvIsr(void)
{
DMA_stop(hDMAfifo);
oneframe=1;
IRQ_globalEnable();
return;
}
void delayS()
{
int j = 0;
for(j = 0;j<10;j++);
}
void delayL()
{
int j = 0;
for(j = 0;j<1000;j++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -