STM32F103ZET6+USART+串口通信
一、 通信概述
通信就是数据交换、信息交换。嵌入式系统中,微控制器与其他外围设备相互连接,系统各部件之间进行数字信 /数据的传输就是通信,无论是大型嵌入式系统还是小型嵌入式系统,都需要用到通信。
通信的方式有很多种,按数据传送方式可分为串行通信和并行通信;按通信数据同步方式可分为同步通信和异步通信;在串行通信中按数据传输方向及与时间的关系可分为单工通信、半双工通信和全双工通信。
字符速率:每秒所传输的字符数:波特率=字符速率×每个字符包含的位数
五、 异步串行通信协议
异步串行通信标准的数据帧由起始位、数据位、校验位、停止位四部分组成。数据传输速率为50、75、100、150、300、600、1200、2400、4800、9600、19200和38400波特。
起始位:占一位,位于数据帧的开头,以逻辑“0”表示传输数据的开始。
数据位:要发送的数据,数据长度可以是5~8位。
校验位:占一位,用于检测数据是否有效。
停止位:一帧传送结束的标志,根据实际情况定,可以是1、1.5或2位。
空闲位:数据传输完毕,用“1”表示当前线路上没有数据传输。
UART(Universal Asynchronous Receiver Transmitter,通用异步收发传输器)是一个全双工通用异步串行收/发模块,主要用于打印程序调试信息、上位机和下位机的通信以及ISP程序下载等场合。
UART至少需要两根数据线用于通信双方进行数据双向同时传输,最简单的UART接口由TxD、RxD、GND共3根线组成。其中,TxD用于发送数据,RxD用于接收数据,GND为信 地线,通过交叉连接实现两个芯片间的串口通信。
2、串口所用的GPIO时钟使能,串口时钟使能
开启外设时钟RCC_APB2PeriphClockCmd()。例如:使能USART1、GPIOA的时钟,所用的函数为
3、 设置I/O引脚功能为复用推挽输出、浮空输入
串口使用的是I/O的复用功能。USART1的发送引脚为PA9,需将PA9配置为复用推挽输出;USART1的输入引脚为PA10,需将PA10配置为浮空输入。
4、 设置波特率,设置数据格式:数据位、停止位、校验位
5、使用串口初始化函数USART_Init()初始化相应串口
6、利用串口使能函数USART_Cmd()使能相应串口
7、应用程序编写
若使用中断,则编写串口中断函数void USART1_IRQHandler(void)
接下来,设计通过串口1利用查询方式实现发送字符命令”Y”点亮LED灯,发送字符命令”N”熄灭LED灯。并且重定向printf()函数和scanf()函数,即重写fput()函数和fget()函数
采用查询方式进行数据通信
在之前的LED工程上,新建两个文件,一个是myusart.h文件,另一个是myusart.c文件
myusart.h文件的代码如下:
myusart.c文件的代码如下:
main.c文件的代码如下:
运行效果
打开串口调试助手

接下来,设计通过串口1利用中断方式实现发送字符命令”1″点亮LED灯,发送字符命令”0″熄灭LED灯。并且重定向printf()函数和scanf()函数,即重写fput()函数和fget()函数
采用中断方式进行数据通信
myusart.h文件的代码如下:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!