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

it2023-11-17  82

串口通信库函数的配置

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)