走近串口和数据帧配置
1正式走进串口资源
STM8:URAT1/URAT 2/URAT3;
URAT1的功能和模式:
异步通信模式:TXD、RXD
同步通信模式:TXD、RXD、SCK
半双工通信模式、多处理器模式、红外通信模式、智能卡模式、LIN主模式、LIN从模式
2串口使用的一些问题
问题一:从数据帧结构入手,数据帧的位数如何确定?
问题二:数据帧后面跟随的是校验位,方式如何确定?是否必须?
问题三:校验位后面给随的是停止位,它的位数又如何确定?
问题四:收发双方在数据帧格式他统一后,通信波特率如何配置?
问题五:怎么启动发送和接收功能(使能)?问题六:怎么确定发送和接收过程完毕(标志位)?
问题七:如何将数据发送过去和接收过来(瓶子)?
这七个问题务必印刻在脑海里。
3我们总结一下
前三个问题:数据帧
问题四:波特率
问题五和六:数据状态(使能和标志位)
问题七:数据(瓶子)
4想清楚了这些问题,那么串口流程也就清楚了,啥流程?套路呗?
系统运行并确定主时钟,进入串口初始化(HSI%/HSE%,封装成一个函数);
设定发送数据位数(56789)
设定发送数据校验位及校验方式
设定发送数据停止位(1/1.5/2)
设定发送数据波特率(速度)
使能发送功能(查询法)
使能发送中断功能(中断法)
发送单字节数据(被动单单只判断最高位并清零)
发送字符串数据(通过判断定义一个指针)
发送多字节数据(通过数组建立一个循环)
等待判断发送完成(查询和中断法)
5 STM8以上流程用寄存器就简单了
老实说,总共有四种寄存器,常规的寄存器有五个,最常规的位有十个以下。
STM8串口资源的寄存器:
控制寄存器(UART1_CR1)、
波特率寄存器(UART1_BRR1)、
数据寄存器(UART1_DR1)、
数据状态寄存器(UART1_SR)
理清楚四点:数据帧、波特率、数据、数据状态
6第一个重头戏:如何把数据帧格式约定好?两个寄存器就好
数据位:UART1_CR1中的“M”位,该位定义了数据字的长度和内容。
校验位:UART1_CR1中的“PCEN”“PS”“PIEN”三个位,其中PCEN位是0禁止/1使能,PS位是0偶校验/1奇校验,PIEN位是0中断禁止/1中断允许(标志位UART1_SR中“PE”位置1)。
停止位:UART1_CR3中的“STOP【1:0】”位,该位定义了停止位长度。