s5pv210裸機串列埠無響應

2021-08-19 15:29:41 字數 3685 閱讀 2081

#define gpc0con        *((volatile unsigned int *)0xe0200060)

#define gpc0dat*((volatile unsigned int *)0xe0200064)

#define gpa0con*((volatile unsigned int *)0xe0200000)

#define gpa0dat*((volatile unsigned int *)0xe0200004)

#define ulcon1          *((volatile unsigned int *)0xe2900400)

#define ucon1 *((volatile unsigned int *)0xe2900404)

#define ufcon1          *((volatile unsigned int *)0xe2900408)

#define umcon1         *((volatile unsigned int *)0xe290040c)

#define utrstat          *((volatile unsigned int *)0xe2900410)

#define uerstat          *((volatile unsigned int *)0xe2900414)

#define ufstat1          *((volatile unsigned int *)0xe2900418)

#define umstat1         *((volatile unsigned int *)0xe290041c)

#define utxh1 *((volatile unsigned int *)0xe2900420)

#define urxh1 *((volatile unsigned int *)0xe2900424)

#define ubrdiv1          *((volatile unsigned int *)0xe2900428)

#define udivslot        *((volatile unsigned int *)0xe290042c)

#define uintp1 *((volatile unsigned int *)0xe2900430)

#define uintsp1           *((volatile unsigned int*)0xe2900434)

#define uintm1            *((volatile unsigned int*)0xe2900438)

void delay(volatileunsigned int t)

volatile unsigned int base = 0xa000;

while(t--)

for(base=0xa000;base;--base);

voidled_tip(unsigned int control)

volatile unsigned int temp;

if(control==0x03)/*燈1閃爍*/

temp = ~gpc0dat;

temp ^= ~(1<<3);

gpc0dat = temp;

delay(4);

else if(control==0x0a)/*燈2閃爍*/

temp = ~gpc0dat;

temp ^= ~(1<<4);

gpc0dat = temp;

delay(4);

else if(control==0x30)/*雙燈交替閃爍*/

gpc0dat = 0x08;

delay(2);

gpc0dat = 0x10;

delay(2);

else if(control==0xa0)/*雙燈同閃*/

gpc0dat = 0x18;

delay(2);

gpc0dat = 0;

delay(2);

void led_init()

gpc0con |= 0x11<<12;

void uart_init()

gpa0con = 0x00220000;

ulcon1 = 0x00000003;

ucon1 = 0x00000005;

ufcon1 = 0x00000001;

umcon1 = 0;

ubrdiv1 = 34;

udivslot = 0xdfdd;

static voidsend_byte(volatile unsigned char byte)

while((ufstat1 &(1<<24)));

utxh1=byte;

static volatileunsigned char recv_byte()

while(!(ufstat1 & 0xff))

led_tip(0x03);

return urxh1;

voidputchar(volatile unsigned char c)

send_byte(c);

if(c=='\n') send_byte('\r');

volatile unsignedchar getchar()

volatile unsigned char c;

c = recv_byte();

return c;

void puts(volatilechar *str)

volatile char *p = str;

while(*p) putchar(*p++);

putchar('\n');

void uart()

volatile unsigned char c;

volatile unsigned int temp;

led_init();

uart_init();

puts("puts your key and thelight will be changed");

puts("1 led1");

puts("2 led2");

while(1)

c = getchar();

putchar(c);

putchar('\r');

if(c=='1')

//temp =gpc0dat & (0x1<<3);

//temp^=0;

gpc0dat =0x10;

else if(c=='2')

//temp =gpc0dat & (0x1<<4);

//temp^=0;

//gpc0dat&= temp;

gpc0dat =0x08;

else

gpc0dat =0x18;

led_tip(0x0a);

串列埠可以輸出提示資訊,但是對於輸入沒有任何的反應,經過點燈的除錯,知道在接收的函式裡面一直迴圈等待,uart()函式裡面的while迴圈裡面的點燈測試程式是沒有機會執行的。現在發現輸入1、2和傳送字元1、2板子上的燈是有反應的,但是,輸入的字元並沒有顯示出來,這是為什麼?

好吧,我現在發現這個錯誤了,尷尬並且表示非常的吃驚!問題**如下,

不知道為什麼,這個地方需要換成』\n』或者不用,在後面判斷,最後的else是我現在才加的,不需要看。

S5PV210 裸機中斷

這裡我以外部中斷為例畫出了中斷響應的過程。當外部中斷得到響應,會由硬體自動轉到異常向量表,執行對應的異常處理程式。在這裡指的就是irq的處理程式。在異常處理程式irq handle中將會執行現場的保護與恢復,以及最重要的中斷處理函式 注意,這裡就來到了中斷處理部分,而不是異常處理了,相當於是乙個兩級...

我的S5pv210裸機程式設計

今天是2015年0910,用的是九鼎公司的s5pv210。開始動手的第一天。第一步 把通過看i210開發板硬體手冊中,關於撥碼開關的設定,選擇usb啟動的模式,設定為1 x1xx即可使用。第二步 安裝usb線的驅動,由於驅動在win7 64位中沒有簽名所以需要破解才能安裝驅動。先使用安裝檔案中的破解...

ARM裸機 S5PV210簡析

armv7架構是在armv6架構的基礎上誕生的。該架構採用了thumb 2技術,thumb 2技術是在arm的thumb 壓縮技術的基礎上發展起來的,並且保持了對現存arm解決方案的完整的 相容性。thumb 2技術比純32位 少使用 31 的記憶體,減小了系統開銷。同時能夠提供比已有的基於thum...