串口通信库函数的配置小结

串口通信库函数的配置

1.常用的串口相关寄存器:

在这里插入图片描述

状态寄存器常用位

在这里插入图片描述

数据寄存器

在这里插入图片描述

波特率寄存器:

在这里插入图片描述

分整数和小数分别配置波特率寄存器
(小数部分化为16进制是:小数*16)

在这里插入图片描述

2.波特率的计算方法

在这里插入图片描述

3.常用的串口相关库函数

在这里插入图片描述

※4.串口配置的一般步骤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zfwMwJFv-1603207574128)(7.png)]

Attention:
关于有GPIO的配置
具体要看表格配置串口发送和接受时候的Mode

在这里插入图片描述

5.串口通信协议规定代码

在这里插入图片描述

最上面define的是最大接收字节数
例如电脑传给单片机
单片机最多只能接收200个字节

下面的USART_RX_STA变量
是接收状态标记
如图中所示
必须要以
(0x0D,0x0A)//即回车和换行
作为结尾,否则它就不认这一串东西

例如:

在这里插入图片描述

(0x0D),(0x0A)这俩东西不是有效字符,不会占用数据空间

其实它一直在判断有没有接收到(0x0D)
如果检测到了,就把USART_RX_STA的bit14置一
然后检测下一个数据,如果是(0x0A),那就接收完成
此时把USART_RX_STA的bit15置一

实验代码具体的进行:
如何实现电脑发给单片机数据,单片机返回给电脑呢?
【在协议的角度】:
在外部的主函数里面,不停分析
USART_RX_STA的bit15
如果是1(标志接收完成)
就根据bit13~0(接收到的有效数据个数)
来提取USART_RX_BUF中的数据
然后拿出来发送给电脑
最后的最后,将USART_RX_STA变量清零!!

最后的最后的最后!!!
如果想要通过串口输出某个参数
只要用正点原子包装好的
printf();就可以了
这个是真的牛批,支持C语言里面printf();的所有用法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值