串列埠控制器初始化關鍵步驟
(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(constmakefilechar *fmt, ...)
return
len;
}int scanf(const
char *fmt, ...)
else
}va_start(args,fmt);
i =vsscanf(g_pcinbuf,fmt,args);
va_end(args);
return
i;}
cc = arm-linux-gccld = 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...