?? main.c
字號(hào):
#include "..\inc\uTypes.h"
#include "..\inc\44b0x.h"
#include "..\inc\console.h"
#include "..\inc\sysUtils.h"
//申明函數(shù)
void IoConfig (void);
void KeyLedTest (void);
//我們用這個(gè)片編存儲(chǔ)我們的IRQ ISR入口地址
U32 pIrqStart = 0;
U32 pIrqFinish = 0;
U32 pIrqHandler = 0;
U32 g_pTopOfROM = 0;
U32 g_pBaseOfROM = 0;
U32 g_pBaseOfBSS = 0;
U32 g_pBaseOfZero = 0;
U32 g_pEndOfBSS = 0;
extern U32 GetBaseOfROM (void);
extern U32 GetEndOfROM (void);
extern U32 GetBaseOfBSS (void);
extern U32 GetBaseOfZero (void);
extern U32 GetEndOfBSS (void);
extern void lcmInit (void);
extern void lcmSetPos (int nPos);
extern void lcmWriteData (U8 byData);
extern void lcmWriteCmd (U8 byCmd);
U8 dis1[] = "11";
U8 dis2[] = "222";
U8 dis3[] = "333";
int main(void)
{
int i;
sysUtilsSetPllValue (24, 6, 1);
IoConfig ();
console_init (115200);
// printf ("\n\boot over\n\n");
//熄滅所有的LED燈
sysUtilsLightLed (LED_ALL, FALSE);
// g_pTopOfROM = GetEndOfROM ();
// g_pBaseOfROM = GetBaseOfROM ();
// g_pBaseOfBSS = GetBaseOfBSS ();
// g_pBaseOfZero = GetBaseOfZero ();
// g_pEndOfBSS = GetEndOfBSS ();
//printf ("g_pTopOfROM = 0x%08x.\n", g_pTopOfROM);
// printf ("g_pBaseOfROM = 0x%08x.\n", g_pBaseOfROM);
// printf ("g_pBaseOfBSS = 0x%08x.\n", g_pBaseOfBSS);
// printf ("g_pBaseOfZero = 0x%08x.\n", g_pBaseOfZero);
// printf ("g_pEndOfBSS = 0x%08x.\n", g_pEndOfBSS);
// printf ("&g_pTopOfROM = 0x%08x.\n", &g_pTopOfROM);
// printf ("&g_pBaseOfROM = 0x%08x.\n", &g_pBaseOfROM);
// printf ("&g_pBaseOfBSS = 0x%08x.\n", &g_pBaseOfBSS);
lcmInit ();
lcmSetPos(0x03); // 設(shè)置顯示位置為第一行的第5個(gè)字符
i = 0;
while(dis1[i] != '\0')
{
lcmWriteData (dis1[i]);
i++;
}
lcmSetPos(0x12); // 設(shè)置顯示位置為第二行第二個(gè)字符
i = 0;
while(dis2[i] != '\0')
{
lcmWriteData (dis2[i]);
i++;
}
lcmSetPos(0x08); // 設(shè)置顯示位置 第三行
i = 0;
while(dis3[i] != '\0')
{
lcmWriteData (dis3[i]);
i++;
}
for (i=0;i<3;i++);
return 0;
}
/****************************************************************************
函數(shù)名稱(chēng): IoConfig
功 能: 初始化IO口
參 數(shù): 無(wú)
返回 值: 無(wú)
****************************************************************************/
void IoConfig (void)
{
// PORT A GROUP
/* BIT 9 8 7 6 5 4 3 2 1 0 */
/* A24 A23 A22 A21 A20 A19 A18 A17 A16 A0 */
/* 0 1 1 1 1 1 1 1 1 1 */
//rLCDCON1=0x3c431;
rPCONA = 0x1ff;
// PORT B GROUP
/* BIT 10 9 8 7 6 5 4 3 2 1 0 */
/* /CS5 /CS4 /CS3 /CS2 /CS1 nWBE3 nWBE2 /SRAS /SCAS SCLK SCKE */
/* EXT NIC 8019 IDE D12 NC NC Sdram Sdram Sdram Sdram */
/* 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1 */
rPDATB = 0x04f;
rPCONB = 0x3cf;
//PORT C GROUP
//BUSWIDTH=16 */
/* PC15 14 13 12 11 10 9 8 */
/* o o RXD1 TXD1 o o o o */
/* NC NC Uart1 Uart1 NC NC NC NC */
/* 01 01 11 11 01 01 01 01 */
/* PC7 6 5 4 3 2 1 0 */
/* o o o o o o o o */
/* NC NC NC NC LED LED LED LED */
/* 01 01 01 01 01 01 01 01 */
//rPDATC = 0x0000; //All IO is low
//rPCONC = 0x5f555555;
//rPUPC = 0x3000; //PULL UP RESISTOR should be enabled to I/O
//PORT C GROUP
//IISLRCK IISD0 IISDI IISCLK VD7 VD6 VD5 VD4 nXDACK1 nXDREQ1 GPC10 GPC11 TXD1 RXD1 GPC14 GPC15
//All input
// 11 11 11 11 11 11 11 11 11 11 01 01 11 11 01 01
//rPDATC=0x8400;
//rPCONC=0x5F5FFFFF;
//rPUPC=0x33ff; //should be enabled
rPDATC=0xffff; //All I/O Is High
rPCONC=0x0f05ff55;
rPUPC=0x30f0; //PULL UP RESISTOR should be enabled to I/O
//PORT D GROUP
//VFRAME VM VLINE VCLK VD3 VD2 VD1 VD0
// 10,10, 10, 10, 10, 10, 10, 10
rPCOND=0xaaaa;
rPUPD=0xff;
//PORT D GROUP
/* PORT D GROUP(I/O OR LCD) */
/* BIT7 6 5 4 3 2 1 0 */
/* VF VM VLINE VCLK VD3 VD2 VD1 VD0 */
/* 01 01 01 01 01 01 01 01 */
//rPDATD= 0x55;
//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 o o TOU2 o o RXD0 TXD0 FOUT */
/* 00 01 01 10 01 01 10 10 11 */
rPDATE = 0x157; //Beep = 10
rPCONE = 0x596b;
rPUPE = 0xff;
//PORT F GROUP
/* Bit8 7 6 5 4 3 2 1 0 */
/* IISCLK IISDI IISDO IISLRCK Input Input Input IICSDA IICSCL */
/* 100 100 100 100 00 00 00 10 10 */
rPDATF = 0x0;
rPCONF = 0x24900a;
rPUPF = 0x1d3;
//PORT G GROUP
/* BIT7 6 5 4 3 2 1 0 */
/* EINT7 EINT6 EINT5 EINT4 EINT3 EINT2 EINT1 EINT0 */
/* KEY3 KEY2 KEY1 KEY0 NIC EXT IDE USB */
/* 11 11 11 11 11 11 11 11 */
rPDATG = 0xff;
rPCONG = 0x0000;
rPUPG = 0x00; //should be enabled
rSPUCR= 0x4;//0x7; //D15-D0 pull-up disable
//rSPUCR= 0x6; //D15-D0 pull-up enable
rSYSCFG = 0x0e; //使用8K字節(jié)的指令緩存,write buffer disable
rNCACHBE0 = 0xc0002000; //定義非Cache區(qū),從0x2000000到0xbffffff,中斷時(shí)進(jìn)入ROM,若不允許CACHE不正常
rEXTINT = 0x0; //所有的外部硬件中斷為低電平觸發(fā)
}
/****************************************************************************
函數(shù)名稱(chēng): KeyLedTest
功 能: 測(cè)試1 * 4鍵盤(pán),4個(gè)按鍵是接在EXTINT 4,5,6,7上面的,
當(dāng)我們檢測(cè)到有按鍵的時(shí)候就用LED顯示相關(guān)的按鍵信息!
參 數(shù): 無(wú)
返回 值: 空
****************************************************************************/
#define EXTINT4 0
#define EXTINT5 1
#define EXTINT6 2
#define EXTINT7 3
#define EXTINT4567 21
#define INTTRIG_LOW 0x00
#define INTTRIG_HIGH 0x01
#define INTTRIG_FALLING 0x02
#define INTTRIG_RISING 0x04
#define INTTRIG_BOTHEDGE 0x05
void KeyLedTest (void)
{
U32 dwVal;
//設(shè)置IO 口PORT G
rPCONG |= 0xff00;
//設(shè)置中斷
rINTMOD &= ~MASK_BIT(21);
rINTCON &= ~MASK_BIT(1);
//設(shè)置EXTINT4,5,6,7中斷模式,我們這里使用低電平觸發(fā)
rEXTINT &= 0xffff; //先清除EXTINT4,5,6,7的相應(yīng)設(shè)置bit位
for (;;)
{
dwVal = rINTPND;
if ((dwVal & MASK_BIT(21)) == 0)
{
continue;
}
//EXTINTPND 寄存器,判斷是哪個(gè)外部中斷觸發(fā)
dwVal = rEXTINTPND;
if ((dwVal & MASK_BIT(EXTINT4)) != 0)
{
rEXTINTPND |= MASK_BIT(EXTINT4);
//外部中斷4 產(chǎn)生了,點(diǎn)亮LED1
sysUtilsLightLed (LED1, TRUE);
}
if ((dwVal & MASK_BIT(EXTINT5)) != 0)
{
rEXTINTPND |= MASK_BIT(EXTINT5);
//外部中斷4 產(chǎn)生了,點(diǎn)亮LED2
sysUtilsLightLed (LED2, TRUE);
}
if ((dwVal & MASK_BIT(EXTINT6)) != 0)
{
rEXTINTPND |= MASK_BIT(EXTINT6);
//外部中斷4 產(chǎn)生了,點(diǎn)亮LED3
sysUtilsLightLed (LED3, TRUE);
}
if ((dwVal & MASK_BIT(EXTINT7)) != 0)
{
rEXTINTPND |= MASK_BIT(EXTINT7);
//外部中斷4 產(chǎn)生了,點(diǎn)亮LED1,2,3
sysUtilsLightLed (LED_ALL, FALSE);
}
//最后清除中斷位
//rI_ISPC |= MASK_BIT(21);
rI_ISPC = dwVal;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -