串口通信实验

目录

一、串口通信实验

1.1 硬件原理图

1.2 相关寄存器

1.3 Makefile修改

1.4 uart.c/h文件

1.5 main.c文件

1.6 script.ldr文件

1.7 实验现象


一、串口通信实验

1.1 硬件原理图

1.2 相关寄存器

UART1时钟源:CCM_CSCDR1寄存器。

初始化UART:

        UART1_UCR1:使能UART1、设置自动波特率(很少使用,直接禁用)。

        UART1_UCR2:设置串口的发送帧格式。

                奇偶校验位、软件复位。

                数据长度。

                发送完成标志、数据接收标志。

                发送使能、接收使能。

        UART1_UCR3:bit2置一,官方要求设置。

        UART1_UFCR:时钟分频、发送与接收的fifo大小。

        UART1_UBIR、UART1_UBMR:波特率。

                波特率 = 时钟分频后的值 / (16 * (UBMR + 1)/(UBIR + 1))

收发数据:

       UART1_UTXD:发送一个字符。          

       UART1_URXD:接收一个字符。 

1.3 Makefile修改

官方SDK的设置波特率函数使用了除法,需要提供gcc除法库。

LIBPATH := -lgcc -static -L/usr/lib/gcc/arm-none-eabi/6.3.1

-lgcc:表示链接libgcc.a库。

-static -L:表示静态库所在路径。

#ARCH?=x86
ifeq ($(ARCH),x86)
	CC=gcc
else
	CC=arm-none-eabi-gcc
	LD=arm-none-eabi-ld
	OBJCOPY=arm-none-eabi-objcopy
endif

TARGET=test
BUILD_DIR=build
SRC_DIR=module/project 	\
		module/common 	\
		module/irq 		\
		module/led 		\
		module/btn		\
		module/clock	\
		module/uart
INC_DIR=include			\
		module/common 	\
		module/irq 		\
		module/led 		\
		module/btn		\
		module/clock	\
		module/uart
CFLAGS=$(patsubst %,-I %,$(INC_DIR))
INCLUDES=$(foreach dir,$(INC_DIR),$(wildcard $(dir)/*.h))
LIBPATH := -lgcc -static -L/usr/lib/gcc/arm-none-eabi/6.3.1

SOURCE_c=$(foreach dir,$(SRC_DIR),$(wildcard $(dir)/*.c))
SOURCE_s=$(foreach dir,$(SRC_DIR),$(wildcard $(dir)/*.s))
OBJS=$(patsubst %.c,$(BUILD_DIR)/%.o,$(notdir $(SOURCE_c)))
OBJS+=$(patsubst %.s,$(BUILD_DIR)/%.o,$(notdir $(SOURCE_s)))
VPATH=$(SRC_DIR)

$(BUILD_DIR)/$(TARGET).bin:$(OBJS)
	$(LD) -Tscript.lds -o $(BUILD_DIR)/$(TARGET).elf $^ $(LIBPATH)
	$(OBJCOPY) -O binary $(BUILD_DIR)/$(TARGET).elf $@

$(BUILD_DIR)/%.o:%.c $(INCLUDES) | create_build
	$(CC) -c $< -o $@ $(CFLAGS)

#编译汇编文件
$(BUILD_DIR)/%.o:%.s $(INCLUDES) | create_build
	$(CC) -c $< -o $@ $(CFLAGS)

.PHONY:clean create_build burn
clean:
	rm -r $(BUILD_DIR)
create_build:
	mkdir -p $(BUILD_DIR)
burn:
#	cp $(BUILD_DIR)/$(TARGET).bin /mnt/hgfs/Share\ File\ Pack/Embedfire\ IMX\ download\ Tools/download_tool
	cd ../Embedfire\ IMX\ download\ Tools/download_tool && ./mkimage.sh ../../test1/$(BUILD_DIR)/$(TARGET).bin

1.4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值