📄 control.c
字号:
/****************************************************************
* ARMSYS7 S3C44B0X developer's notes *
****************************************************************
1. 2005.5.17::改变功能函数内容
***************************************************************/
#include "\inc\define.h"
#include "\inc\drives.h"
void ShowBootInfo(void)
{
puts("\n---------------------------------------------------------------");
puts("\nOEM name : LiYuTai Elec.Co.,Ltd. ");
puts("\nWebsite : www.hzlitai.com.cn ");
puts("\nEmail : lyt_tech@yahoo.com.cn ");
puts("\nFunction : ARMSYS's BIOS for A0744B0P V1.4 ");
puts("\nUART config: 115.2kbps,8Bit,NP,UART0 ");
puts("\n---------------------------------------------------------------\n");
}
//------------------------PORTS------------------------------//
void PortInit(void)
{
//CAUTION:Follow the configuration order for setting the ports.
// 1) setting value
// 2) setting control register
// 3) configure pull-up resistor.
// 4) 16bit data bus configuration
// PORT A GROUP
/* BIT 9 8 7 6 5 4 3 2 1 0 */
/* A24 A23 A22 A21 A20 A19 A18 A17 A16 A0 */
/* 1 1 1 1 1 1 1 1 1 1 */
rPCONA = 0x3ff;
// PORT B GROUP
/* BIT 10 9 8 7 6 5 4 3 2 1 0 */
/* /CS5 /CS4 /CS3 /CS2 /CS1 nWBE3 nWBE2 /SRAS /SCAS SCLS SCKE */
/* EXT 8019 USB IDE NV_Flash NC NC Sdram Sdram Sdram Sdram*/
/* 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1 */
//rPDATB = 0x7ff;
rPDATB = 0x7cf;
//PORT C GROUP
//BUSWIDTH=16 */
/* PC15 14 13 12 11 10 9 8 */
/* I O RXD1 TXD1 I I O O */
/* PS2DAT DCLK Uart1 Uart1 Dout BUS Din CS */
/* 00 01 11 11 00 00 01 01 */
/* PC7 6 5 4 3 2 1 0 */
/* o o o o o o o o */
/* VD4 VD5 VD6 VD7 NFALE NFCLE NFCE NFRB*/
/* 11 11 11 11 01 01 01 00 */
rPDATC = 0xffff; //All IO is high
rPCONC = 0x1f05ff54;
rPUPC = 0x3000; //pull-up regiseter should be enabled
//PORT D GROUP
/* PORT D GROUP(I/O OR LCD) */
/* BIT 7 6 5 4 3 2 1 0 */
/* VF VM VLINE VCLK VD3 VD2 VD1 VD0 */
/* 10 10 10 10 10 10 10 10 */
rPDATD= 0xff;
rPCOND= 0xaaaa;
rPUPD = 0x00;
//These pins must be set only after CPU's internal LCD controller is enable
//PORT E GROUP
/* Bit 8 7 6 5 4 3 2 1 0 */
/* ENDLAN LED4 LED5 LED6 LED7 BEEP RXD0 TXD0 display */
/* 10 01 01 01 01 01 10 10 01 */
rPDATE = 0x1ff;
rPCONE = 0x25569; // 8->CODECLK
rPUPE = 0x6; //
//PORT F GROUP
/* Bit8 7 6 5 4 3 2 1 0 */
/* IISCLK IISDI IISDO IISLRCK nXDREQ0 nXDACK0 nWAIT IICSDA IICSCL */
/* 100 100 100 100 11 11 10 10 10 */
rPDATF = 0x0;
rPCONF = 0x2493ea; //0,1->IICSCL IICSDA, 5~8->IIS PORT
rPUPF = 0x000; //pull-up regiseter should be enabled
//PORT G GROUP
/* BIT7 6 5 4 3 2 1 0 */
/* INT7 INT6 INT5 INT4 INT3 INT2 INT1 INT0 */
/* S1 S2 S3 S4 8019 EXT_PS2 IDE USB */
/* 00 00 00 00 11 11 11 11 */
rPCONG = 0x00ff; //EXINT0~3 enabled
rPUPG = 0x00; //pull-up regiseter should be enabled
rSPUCR = 0x7; //D15-D0 pull-up disable
//rSPUCR = 0x6; //D15-D0 pull-up enable
/*所有的外部硬件中断为低电平触发*/
//rEXTINT = 0x0;
rEXTINT=0x0|(1<<14); //均为低电平触发,Exint3设置为上升沿触发
//rEXTINT = 0x42; //所有的外部硬件中断为低电平触发, extint0 为下降沿,extint1为上升沿
//rEXTINT = (4<<16)|(4<<8)|(4<<4); //EINT1上升沿,EINT2上升沿,EINT4上升沿中断
//rINTCON = 5; // non vector mode, irq enable
//rINTMOD = 0; //all are irq mode
}
void Beep(U32 freq, U32 ms)
{
if (freq==0)
rPDATE=rPDATE|0x8;
else
rPDATE=rPDATE&0x1f7;
Delay(ms);
rPDATE=rPDATE|0x8;
}
#define LED4_ON() (rPDATE &= 0x7f)
#define LED5_ON() (rPDATE &= 0xbf)
#define LED6_ON() (rPDATE &= 0xdf)
#define LED7_ON() (rPDATE &= 0xef)
#define LED4_OFF() (rPDATE |= ~0x7f)
#define LED5_OFF() (rPDATE |= ~0xbf)
#define LED6_OFF() (rPDATE |= ~0xdf)
#define LED7_OFF() (rPDATE |= ~0xef)
void LedSet(U32 LedStatus)
{
if(LedStatus&1)
LED7_ON();
else
LED7_OFF();
if(LedStatus&2)
LED6_ON();
else
LED6_OFF();
if(LedStatus&4)
LED5_ON();
else
LED5_OFF();
if(LedStatus&8)
LED4_ON();
else
LED4_OFF();
}
void LedDisp(void)
{
LedSet(0x08);
Delay(50);
LedSet(0x04);
Delay(50);
LedSet(0x02);
Delay(50);
LedSet(0x01);
Delay(50);
LedSet(0x02);
Delay(50);
LedSet(0x04);
Delay(50);
LedSet(0x08);
Delay(50);
LedSet(0x00);
}
void MemCfgInit(void)
{
/*定义非Cache区*/
//rNCACHBE0=((Non_Cache_End>>12)<<16)|(Non_Cache_Start>>12);
rNCACHBE0 = ((unsigned int)(Non_Cache_End>>12)<<16)|(Non_Cache_Start>>12);
rNCACHBE1 = (0xf000U<<16)|(0xe000);
//#ifdef A07S44B0P_BOARD //
//rBWSCON &= ~0xf000; //8bits for RTL8019 in A07S44B0P BOARD
//#endif
}
void BoardInitStart(void)
{
}
void BoardInitEnd(void)
{
}
void BoardPrepareRun(void)
{
}
void CacheDisable(void)
{
rSYSCFG = SYSCFG_0KB;
}
void CacheEnable(void)
{
rSYSCFG = SYSCFG_8KB;
}
void CacheFlush(void)
{
int i, saveSyscfg;
saveSyscfg = rSYSCFG;
rSYSCFG = SYSCFG_0KB;
for(i = 0x10004000; i<0x10004800; i+=16)
*((int *)i) = 0x0;
rSYSCFG = saveSyscfg;
}
U16 GetKeyStatus(void)
{
return (rPDATG>>4);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -