X210串列埠配置與stdio移植

2022-04-07 19:03:40 字數 3283 閱讀 7372

串列埠控制器初始化關鍵步驟

(1)初始化串列埠的tx和rx引腳所對應的gpio(查原理圖可知rx和rx分別對應gpa0_1和gpa0_0)

(2)gpa0con(0xe0200000),bit[3:0] = 0b0010 bit[7:4] = 0b0010

(3)初始化這幾個關鍵暫存器ucon0 ulcon0 umcon0 ufcon0 ubrdiv0 udivslot0

主要的幾個暫存器

(1)ulcon0 = 0x3 // 0校驗位、8資料位、1停止位

(2)ucon = 0x5 // 傳送和接收都是polling mode

(3)umcon0 = 0x0 // 禁止modem、afc

(4)ufcon0 = 0x0 // 禁止fifo模式

(5)ubrdiv0和udivslot0和波特率有關,要根據公式去算的

波特率的計算和設定

(1)第一步,用pclk_psys和目標波特率去計算div_val: div_val = (pclk / (bps x 16)) ?1

(2)第二步,ubrdiv0暫存器中寫入div_val的整數部分

(3)第三步,用小數部分*16得到1個個數,查表得ubdivslot0暫存器的設定值

//串列埠初始化

void

uart_init()

//串列埠傳送一位元組

void uart_putc(char

c)char

uart_getc()

2.移植stdio(部分**展示)

int printf(const

char *fmt, ...)

return

len;

}int scanf(const

char *fmt, ...)

else

}va_start(args,fmt);

i =vsscanf(g_pcinbuf,fmt,args);

va_end(args);

return

i;}

makefile

cc        = arm-linux-gcc

ld = arm-linux-ld

objcopy = arm-linux-objcopy

objdump = arm-linux-objdump

ar = arm-linux-ar

incdir :=$(shell pwd)

# c預處理器的flag,flag就是編譯器可選的選項

cppflags := -nostdlib -nostdinc -i$(incdir)/include

# c編譯器的flag

cflags := -wall -o2 -fno-builtin

#匯出這些變數到全域性,其實就是給子資料夾下面的makefile使用

export cc ld objcopy objdump ar cppflags cflags

objs :=start.o led.o clock.o uart.o main.o

objs += lib/libc.a

uart.bin: $(objs)

$(ld) -tlink.lds -o uart.elf $^$(objcopy) -o binary uart.elf uart.bin

$(objdump) -d uart.elf >uart_elf.dis

gcc mkv210_image.c -o mkx210

./mkx210 uart.bin 210

.bin

lib/libc.a:

cd lib; make; cd ..

%.o : %.s

$(cc) $(cppflags) $(cflags) -o $@ $< -c

%.o : %.c

$(cc) $(cppflags) $(cflags) -o $@ $< -c

clean:

rm *.o *.elf *.bin *.dis mkx210 -f

cd lib; make clean; cd ..

210串列埠控制台 210移植printf不好使

210串列埠控制台 問題描述 這邊正常大家應該會發現,移植核心中printf函式還是會不好使,但是基本的串列埠列印是正常的,首先我們先得分析一下這邊主要的原因,如果細心的同學應該會發現,當我們加入核心printf的 之後,編譯出來的檔案會大於16k,可以發現手冊中有這個部分的操作順序,上電之後首先會...

stm32串列埠的配置過程

串列埠的配置過程 一 配置串列埠用到的io口 rx浮空輸入 tx復用推挽輸出 注意 具體配置如下 用於串列埠通訊 設定gpioa.9 usart.tx 為復用推挽輸出 gpio initstructure.gpio pin gpio pin 9 gpio initstructure.gpio spe...

樹莓派4串列埠配置及使用

sudo nano boot cmdline.txt 刪除 console ttyama0,115200 kgdboc ttyama0,115200sudo nano boot config.txt 最後增加下面兩句話 dtoverlay pi3 miniuart bt enable uart 1s...