串口通信库函数的配置小结
串口通信库函数的配置
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();
的所有用法