?? init.c
字號:
#include "Sys.h"
#include "../CPLD.h"
#include "regdef.h"
#include "Init.h"
extern void Init_EBIU(void);
extern void Init_PLL(void);
extern void Init_SDRAM(void);
extern void Init_PPI(void);
extern void Init_PPIDMA(void);
extern void Init_Timer(void);
extern void Init_Flash(void);
extern PPICtrl myppictrl;
extern DMA0Config ppidmacfg;
extern TIMERxCONFIG mytimer1cfg;
extern TIMERxCONFIG mytimer2cfg;
EX_INTERRUPT_HANDLER(DMA0_PPI_ISR);
void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0x7bb07bb0;
*pEBIU_AMGCTL = 0x00ff;
}
void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
}
void Init_CPLD(void)
{
int i;
*pLED = 0x00;
for(i = 0;i <100000;i++);
*pLED = 0xff;
for(i = 0;i <100000;i++);
*pCtrlReg2_S = 0x03; //for ver3
for(i = 0;i <10000;i++);
}
/***********************************************************************/
void Init_PPI(void)
{
*pPPI1_DELAY = 0xcb;//106 cycle delay before writing out data
*pPPI1_COUNT = 959;//960 samples per line
myppictrl.PPICtrlBits.dlen = 0;//data length is 8bits
myppictrl.PPICtrlBits.fldsel = 0;//external trigger
myppictrl.PPICtrlBits.packen = 1;//disable packing mode
myppictrl.PPICtrlBits.polc = 0;//do not invert PPI_CLK
myppictrl.PPICtrlBits.pols = 1;//invert PPI FS
myppictrl.PPICtrlBits.portcfg = 1;//use 2 or 3 frame syncs
myppictrl.PPICtrlBits.portdir = 1;//transmit mode(output)
myppictrl.PPICtrlBits.porten = 0;//disable now
myppictrl.PPICtrlBits.skipen = 0;//skipping disabled
myppictrl.PPICtrlBits.skipeo = 0;//skip odd-numbered elements,do not care
myppictrl.PPICtrlBits.xfrtype = 3;//output mode
*pPPI1_CONTROL = myppictrl.PPICtrlValue;//Generic 3-sync mode
}
void Init_PPIDMA(void)
{
//*pDMA1_1_START_ADDR = 0x8000;
*pDMA1_1_START_ADDR = DisplayBuffer;
*pDMA1_1_X_COUNT = 960/2;
*pDMA1_1_X_MODIFY = 2;
*pDMA1_1_Y_COUNT = 262;
*pDMA1_1_Y_MODIFY = 2;
*pDMA1_1_PERIPHERAL_MAP = 0x1000;
ppidmacfg.DMA0ConfigBits.dien = 0;
ppidmacfg.DMA0ConfigBits.disel = 0;
ppidmacfg.DMA0ConfigBits.dma2d = 1;//two dimensional dma
ppidmacfg.DMA0ConfigBits.dmaen = 0;//disable now
ppidmacfg.DMA0ConfigBits.flow = 0x1;//autobuffer mode
ppidmacfg.DMA0ConfigBits.ndsize = 0;
ppidmacfg.DMA0ConfigBits.restart = 1;//discard dma fifo
ppidmacfg.DMA0ConfigBits.wdsize = 0x01;//transfers 16bits
ppidmacfg.DMA0ConfigBits.wnr = 0;//memory read operation
*pDMA1_1_CONFIG = ppidmacfg.DMA0ConfigValue;//Autobuffer mode, 2D, 16-bit transfers, Tx
}
void Init_Timer(void)
{
*pTIMER10_PERIOD = 1224;
*pTIMER10_WIDTH = 5;
mytimer1cfg.TIMERxCONFIGBits.tmode = 0x1;
mytimer1cfg.TIMERxCONFIGBits.clksel = 1;
mytimer1cfg.TIMERxCONFIGBits.tinsel = 1;
mytimer1cfg.TIMERxCONFIGBits.emurun = 0;
mytimer1cfg.TIMERxCONFIGBits.errtype = 0x0;
mytimer1cfg.TIMERxCONFIGBits.irqena = 0;
mytimer1cfg.TIMERxCONFIGBits.periodcnt= 1;
mytimer1cfg.TIMERxCONFIGBits.togglehi = 0;
mytimer1cfg.TIMERxCONFIGBits.outdis = 0;
mytimer1cfg.TIMERxCONFIGBits.pulsehi = 0;
*pTIMER10_CONFIG = mytimer1cfg.TIMERxCONFIGValue;
*pTIMER11_PERIOD = 320688;
*pTIMER11_WIDTH = 3672;
mytimer2cfg.TIMERxCONFIGBits.tmode = 0x1;
mytimer2cfg.TIMERxCONFIGBits.clksel = 1;
mytimer2cfg.TIMERxCONFIGBits.tinsel = 1;
mytimer2cfg.TIMERxCONFIGBits.emurun = 0;
mytimer2cfg.TIMERxCONFIGBits.errtype = 0x0;
mytimer2cfg.TIMERxCONFIGBits.irqena = 0;
mytimer2cfg.TIMERxCONFIGBits.periodcnt= 1;
mytimer2cfg.TIMERxCONFIGBits.togglehi = 0;
mytimer2cfg.TIMERxCONFIGBits.outdis = 0;
mytimer2cfg.TIMERxCONFIGBits.pulsehi = 0;
*pTIMER11_CONFIG = mytimer2cfg.TIMERxCONFIGValue;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -