串口通讯
1.串行通讯与并行通讯
串行通讯:指设备之间通过少 量数据信号线(一般是 8根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。就像是单车道的公路,同一时刻只能传输一个数据为的数据。
并行通讯:指使用 8、16、32 及 64 根或更多的数据线进行传输的通讯方式,就像多个车道的公路,可以同时传输多个数据位的数据。
串行通讯的通讯距离和抗干扰能力要优于并行通讯,并且成本更低,而并行通讯的传输速率要优于串行通讯。
2.全双工,半双工和单工通讯
全双工通讯:设备之间可以同时收发数据。 半双工通讯:设备之间可以收发数据,但是不能够同时进行。
单工通讯:单方向的进行数据的发送和接收,即一个设备要么作为发送设备,要么作为接收设备。
3.同步通讯和异步通讯
同步通讯:收发双方使用同一个信号线作为时钟信号,在时钟信号的驱动下双方进行协调,同步数据。
异步通讯:不采用时钟信号进行数据同步,而是在数据信号中穿插一些同步用的信号位来实现同步。
寄存器与基于固件库的编程方式差异:
寄存器:需要深入掌握芯片,需要更多的时间;
固件器:简单易上手,利用已有的芯片和资料依瓢画葫芦编程;
USART串口通信实践
1.实验环境
① 野火指南者(STM32F103VE)
② IDE:KEIL5 MDK
③ 实验所用串口:USART1
硬件原理图
2.实验要求
1)设置波特率为115200,1位停止位,无校验位。
2)STM32系统给上位机(win10)连续发送“hello windows!”,上位机接收程序可以使用“串口调试助手“,也可自己编程。
3)当上位机给stm32发送“Stop,stm32”后,stm32停止发送。
准备
资料包里找到CH341SER.EXE,点击安装运行
在官方资料库中找到USART1接发文件夹下的keil工程文件
打开工程后,点击USER,打开stm32f10x_it.c文件,修改如下
int i=0;
uint8_t u