S5PV210串行通信编程实战1

《朱老师物联网大讲堂》学习笔记

学习地址:www.zhulaoshi.org


代码是在上次的基础上增加

添加了main.c和uart.c

注意修改start.S和Makefile文件,

在start.S中调用main函数,main函数中调用uart.c中的串口初始化和输出函数,


这节课还是看看寄存器为主,只是引子,看一个就可以,

S5PV210串行通信编程实战1_第1张图片

S5PV210串行通信编程实战1_第2张图片

串口初始化的关键步骤:

1.初始化TX和RX引脚所对应的GPIO,它们分别对应GPA0_1和GPA0_0,

S5PV210串行通信编程实战1_第3张图片

2.GPA0CON(0xE020_0000),bit【0~3】 = 0b0010 bit【4:7】 = 0b0010

S5PV210串行通信编程实战1_第4张图片


3.接下来是几个关键性的寄存器

UCON0 ULCON0 UMCON0 UFCON0 UBRDIV0 UDIVSLOTO


ULCONn
31~7 保留
6 红外相关
5~3 奇偶校验,暂时不用
2 使用1bit来设置
1~0  数据位长度

S5PV210串行通信编程实战1_第5张图片

UCONn
31~21 保留
20 没用到DMA,随便设
19~17 保留
16 没用到DMA,随便设
15~11 保留
10 选用0,也就是PCLK
9 中断,暂时不用
8 中断,暂时不用
7 FIFO暂时没用
6 中断,暂时没用
5 LOOP_BACK,回环,也就是用来测试自己,可以不用
4 不知道有什么用
3~2 设置01,使用轮询
1~0 01,设置轮询

S5PV210串行通信编程实战1_第6张图片

S5PV210串行通信编程实战1_第7张图片


UMCONn
全都设置为0

S5PV210串行通信编程实战1_第8张图片

UFCON0
FIFO相关的,可以不用


UBRDIVn和UDIVSLOTn和波特率有关,后面根据公式去算。


这些寄存器都熟悉了以后,我们要进行相关宏的定义

#define UTRSTAT00xE2900010
#define UTXH0 0xE2900020
#define URXH0 0xE2900024


#define rUTRSTAT0(*(volatile unsigned int *)UTRSTAT0)
#define rUTXH0(*(volatile unsigned int *)UTXH0)
#define rURXH0(*(volatile unsigned int *)URXH0)






你可能感兴趣的:(ARM裸机)