📄 main.c
字号:
//LED GPIO#define GPBCON (*(volatile unsigned long *)0x56000010)#define GPBDAT (*(volatile unsigned long *)0x56000014)#define GPBUP (*(volatile unsigned long *)0x56000018)// Set Uart#define UART_CTL_BASE 0x50000000#define reg(i) (*(volatile unsigned long *)(UART_CTL_BASE + i))#define Utrstat0 reg(0x10)#define Utxh0 reg(0x20)void InitLed(){ GPBCON = (GPBCON & ~0x3fc000) | 0x154000; GPBUP &= ~0x780;}void LedPlay(int iLedVal){ GPBDAT=(GPBDAT | 0x780) &( ~(( iLedVal & 0x78) << 4));}void Delay(int msec){ int iDelay = msec * 2048; while(iDelay) iDelay--;}void send(char ch){ while(!(Utrstat0 & 0x4)); Utxh0 |= ch;}char* charge(int Index){ return "0123456789abcdef"+Index;}void MyOut(char *pszFmt,...){ char *pszVal; int iVal, xVal, i = 0, tmp, buffer[12], index = 1; char cVal, a[10]; int *pArg; pArg =(int *)&pszFmt; while(*pszFmt) { if('%' != *pszFmt) { send(*pszFmt); pszFmt++; continue; } pszFmt++; if(*pszFmt == 's') { pszVal = (char*)pArg[index++]; for(; *pszVal != '\0'; pszVal++) send(*pszVal); pszFmt++; continue; } if(*pszFmt == 'd') { iVal = pArg[index++]; while(iVal>0) { tmp = iVal % 10; a[i++] = 0x30 + tmp; iVal /= 10; } for(tmp = i-1; tmp >= 0; tmp--) send(a[i]); pszFmt++; continue; } if(*pszFmt == 'c') { cVal = (char)pArg[index++]; send(cVal); pszFmt++; continue; } if(*pszFmt == 'x') { xVal = pArg[index++]; i = 0; do{ buffer[i++] = xVal % 16; xVal /= 16; }while(xVal); if(i%2!=0) buffer[i++]=0;// if(i<2)// buffer[i++]=0; while(i > 0) { i--; send(*charge(buffer[i])); } pszFmt++; continue; } if(pszFmt == '\0') { break; } }}int Interrupt(){ MyOut("\n\r%s\n\r","watchdog interrupt"); GPBDAT=(GPBDAT | 0x780); Delay(1000); Delay(100); return 0;}int Main(){ int i=0; InitLed(); while(1) { i++; LedPlay(i); Delay(10); } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -