📄 lib_44b0.c
字号:
#include "s3c44b0.h"#include "lib_44b0.h"/**************** System functions ****************/void cpu_init(){ //gpa is no need to change //gpb is no need to change //gpc GPC0-7 nDACK1 nDREQ1 GPC10-11 TXD1 RXD1 GPC14-15 rPDATC=0x00; rPCONC=0x5F5F5555; //gpd output rPDATD=0x00; rPCOND=0x5555; //gpe0 output //gpe1-2 uart //gpe3-7 output //gpe8 CODECLK //pcone: 10 0101 0101 0110 1001 rPCONE=0x25569; //gpf0-1 output //gpf2 unused //gpf3-4 nDACK0 nDREQ0 //gpf5-8 IIS //pconf: 100 100 100 100 11 11 01 01 01 rPCONF=0x2493D5; //gpg0-3 interrupt input //gpg4-7 L3 output //rcong: 0101 0101 1111 1111 rPCONG=0x55FF; rPDATG=0x0FFF; //rextint: - - - - - high rEXTINT=0x5555; // 0001 rINTMOD=0x00; // irq serial_set(); serial_flush(); CLEAR_PEND_ALL; INT_ENABLE(26); // global //INT_ENABLE(25); // eint0 //INT_ENABLE(13); // timer0 //INT_ENABLE(12); // timer1}/**************** Serial functions ****************/void serial_set(void){ int i; /* Locate UART to GPIO */ //PCONE = 0x? Do it in gpio_set() /* FIFO enable, Tx/Rx FIFO clear */ rUFCON0 = 0x07; rUMCON0 = 0x0; /* Normal,No parity,1 stop,8 bit */ rULCON0 = 0x03; /* Normal: interrupt or polling */ rUCON0 = 0x05; //??0x245 rUBRDIV0 = 21; //115200 while Fcpu = 40MHz for (i=0; i<100; i++);}void serial_flush(void){ int i; /* FIFO enable, Tx/Rx FIFO clear */ rUFCON0 = 0x07; for (i=0; i<100; i++);}char serial_getc (void){ while (!(rUTRSTAT0 & 0x1)); return rURXH0 & 0xFF;}void serial_putc (const char c){ while (!(rUTRSTAT0 & 0x2)); rUTXH0 = c;}char serial_tstc (void){ return rUTRSTAT0 & 0x1;}void serial_puts (char *s){ while (*s!=0x00) { serial_putc(*s); if ((*s)=='\n') serial_putc('\r'); s++; }}void serial_gets (char *s){ char *c; c=s; *s=0x00; while (*s!=0x0D) { *s=serial_getc(); *s=*s&0x7F; if (*s!=0x08) { serial_putc(*s); s++; } else if (c!=s) { serial_putc(0x08); serial_putc(0x20); serial_putc(0x08); s--; } } serial_putc(0x0A); *s=0x00;}void serial_puth (unsigned int *h){ unsigned int t; char c; int i; t=*h; serial_putc('0'); serial_putc('x'); for (i=28;i>=0;i-=4) { c=((t>>i)&0x0F)+0x30; if (c>0x39) c+=0x07; serial_putc(c); }}void serial_geth (unsigned int *h){ unsigned int t; char c; char b[14]; int i,j; i=0; c=0x00; while ((c!=0x0D)&&(i!=12)) { c=serial_getc(); c=c&0x7F; if (c!=0x08) { serial_putc(c); b[i]=c; i++; } else if (i!=0) { serial_putc(0x08); serial_putc(0x20); serial_putc(0x08); i--; } } if ((i==12)&&(c!=0x0D)) serial_putc(0x0D); serial_putc(0x0A); t=0; for (j=0;j<i;j++) { if ((b[j]==0x58)||(b[j]==0x78)) t=0; // 'x' and 'X' if (b[j]>0x39) b[j]-=0x07; if ((b[j]>=0x30)&&(b[j]<=0x3F)) t=(t<<4)+((b[j]-0x30)&0x0F); } *h=t;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -