一、串口基本知识
作用 : ①:数据传输;
②: 当作控制台
通信方式,波特率。一般采用的波特率位115200.
通信参数:一般由起始位,八位数据,奇偶校验位还有停止位构成。
RS232位9帧串口 ,其中2,3,5引脚最为重要。2引脚为 RXD接受引脚;3引脚为TXD发送引脚,5引脚为GND引脚。
二、ARM串口编辑
初始化
由于一般RX/TX引脚功能都在GPIO引脚上面,所以查看原理图,找到引脚配置引脚功能。
配置完引脚功能之后,设置数据格式,(8位数据格式)
设置串口工作方式。{在这里要说明,操作系统上一般采用中断方式,而对于btlooder这种小的系统来说,用轮询方式即可}
三、发送和接收字符
很简单,无非就是产看标志位寄存器的标志,所以在这里就不再过多的说明。
四、控制台
printf函数和scanf函数的操作。均在Linux下查看man 3 printf或者man 3 scanf函数的功能参数,在写出函数,分别用了va_list,va_end,va_start等函数,这些函数均在配置文件中给出。
重点:Makefile的书写
记住以下几个Makefile
一级Makefile:
OBJS := start.o main.o dev/dev.o lib/lib.o
CFLAGS := -nostdinc -fno-builtin -I$(shell pwd)/include
export CFLAGS
gboot.bin : gboot.elf
arm-linux-objcopy -O binary gboot.elf gboot.bin
gboot.elf : $(OBJS)
arm-linux-ld -Tgboot.lds -o gboot.elf $^
%.o : %.S
arm-linux-gcc -g -c $^
%.o : %.c
arm-linux-gcc $(CFLAGS) -c $^
lib/lib.o :
make -C lib all
dev/dev.o :
make -C dev all
.PHONY: clean
clean:
rm *.o *.elf *.bin
make -C lib clean
make -C dev clean
其下文件夹的Makefile为
objs := interrupt.o led.o mmu.o uart.o nandflash.o button.o
all : $(objs)
arm-linux-ld -r -o dev.o $^
%.o : %.c
arm-linux-gcc ${CFLAGS} -c $^
%.o : %.S
arm-linux-gcc ${CFLAGS} -c $^
clean:
rm -f *.o
观察不同,并理解。
DMA模式时注意调试串口的UCON寄存器模式从中断模式该位DMA模式。