文章目录
USART
USART(Universal Synchronous Asynchronous Receiver and Transmitter)是一种全双工串行通信设备。单片机与电脑之间的通信方式如下:
串行通信是一帧一帧地发送数据,与串行通信相对应的是并行通信,即一次性发多位数据。
全双工是指收发双方可以同时互发数据并接收,与之对应的还有半双工与单工。半双工是指在同一时刻不允许双方同时发送数据;单工是指只能从一方发送数据到另一方,是单行道。
我们的USART是全双工串行通信设备,它将数据发送给USB转TTL模块,并从那里得到数据。
所谓的TTL其实是一种通讯协议,它规定了高/低电平表示的电压。TTL表示高电平为2.4-5V,低电平为0V。
电脑的接口是USB接口,USB协议与TTL协议不同,就像两门不同语种的语言一样。要让它们之间互相通信,要使用USB转TTL模块,是它们能够转换成对方使用的通讯协议。这里使用的模块是CH340。
几种协议(可跳过)
名称 | 高电平电压 | 低电平电压 | 备注 |
---|---|---|---|
TTL | 2.4V–5V | 0V–0.5V | stm32使用这种 |
RS232 | -5V~-15 V | +3 ~ +15V | 传送距离较远 |
RS-485 | +2V–+6V | -6V—2V | 半双工 |
实验目的与材料
实验目的
使用最小开发版与HAL库实现串口通信。
实验材料
- STM32F103CAT6最小开发版
- 面包板
- CH340串口与杜邦线
软件
- KEIL5
- FlyMcu
- FireTool串口助手
硬件连接
使用usart1进行通信。usart1的TX是A9,RX是A10,将usart的TX,RX与CH340的TX,RX交叉连接。
CH340与芯片的各自的3.3V与GCC相应连接。
HAL库项目创建
1、点击ACCESS TO MCU SELECTOR
2、选择芯片类型
在这个界面,首先在左边的过滤器中选择自己使用的芯片类型,这里是STM32F103C8。过滤器中选择后,在下方窗口中选择具体的自己的芯片。最后点击开始项目。
点击开始项目后,进入到下图所示的页面。
3、可视化配置USART1
首先点击左边项目栏Connectivity中的USART1,然后选择它的工作模式。这里提供选择的模式有Synchronous(同步),Asynchronous(异步)等。串口通信使用的是异步通信方式,因此这里选择异步Asynchronous。
然后点击Parameter Settings,你可以根据你的需要调节相应的数据。这里我使用默认的参数,即波特率:115200,数据字长:8位,检验位:无,停止位:1位。
4、设置项目信息,创建项目
点击Project Manager -> Project 。在这个页面中设置项目名称,路径以及ide。ide就是你用来代码开发的软件。一般使用的是KEIL5,这里就选择MDK-ARM。
再点击Code Generator,在这个页面中勾选generated files中的第一项。如图所示。
勾选之后点击generate code生成代码,这时就可以使用KEIL5打开生成的项目了。生成的项目就在你写的路径下。
代码编写
HAL库发送数据的函数
HAL库中用于发送数据的函数是HAL_UART_Transmit。具体信息如下:
HAL_UART_Transmit(UART_HandleTypeDef *huart, uint_8t *pData, uint16_t Size, uint32_t Timeout)
功能:使用给定的串口发送给定的数据
huart:串口,已经被HAL库封装好,使用USART1, USART2等调用
pData:你的数据,是一个数组,类型是unsigned char
Size:数据长度,单位是字节
Timeout:超时时间,设置为HAL_MAX_DELAY表示无限等待
返回值:HAL_OK发送成功,HAL_ERROR发送错误,HAL_BUSY表示串口被占用,HAL_TIMEOUT表示超时
上面的信息中HAL_xxx是HAL库事先已经写好的宏定义。我们根据名字和手册进行使用即可。
编写代码
进入main.c,将上图的代码写入main函数的死循环中。这段代码的功能使得串口不断向电脑发送"hello world"。
uint8_t hello[20]="hello world\n";
HAL_UART_Transmit(&huart1,hello,20,100000);
烧录与实验现象
1、使用FlyMcu下载器将程序烧录到芯片
在烧录的的时候可能会遇到一些问题,这里笔者以前的博客中提到过。大家可以点击这里去看看。
2、实验现象
使用野火多功能调试助手接收数据,使用其他串口助手软件也可以。
按下图进行分配,成功烧录了程序后,点击复位按钮后,即可看到实验现象。
3、波形观察
在KEIL5的调试功能中提供了一种逻辑分析器,对于给定的引脚,逻辑分析仪在程序开始调试后画出引脚的输出电平的波形图,我们可以用来观察串口引脚的电平变化。