stm32使用hal库向电脑发送数据

USART

USART(Universal Synchronous Asynchronous Receiver and Transmitter)是一种全双工串行通信设备。单片机与电脑之间的通信方式如下:

在这里插入图片描述

串行通信是一帧一帧地发送数据,与串行通信相对应的是并行通信,即一次性发多位数据。

全双工是指收发双方可以同时互发数据并接收,与之对应的还有半双工与单工。半双工是指在同一时刻不允许双方同时发送数据;单工是指只能从一方发送数据到另一方,是单行道。

我们的USART是全双工串行通信设备,它将数据发送给USB转TTL模块,并从那里得到数据。

所谓的TTL其实是一种通讯协议,它规定了高/低电平表示的电压。TTL表示高电平为2.4-5V,低电平为0V

电脑的接口是USB接口,USB协议与TTL协议不同,就像两门不同语种的语言一样。要让它们之间互相通信,要使用USB转TTL模块,是它们能够转换成对方使用的通讯协议。这里使用的模块是CH340。

几种协议(可跳过)

名称高电平电压低电平电压备注
TTL2.4V–5V0V–0.5Vstm32使用这种
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的调试功能中提供了一种逻辑分析器,对于给定的引脚,逻辑分析仪在程序开始调试后画出引脚的输出电平的波形图,我们可以用来观察串口引脚的电平变化。

1、配置

在这里插入图片描述

2、调试

在这里插入图片描述

在这里插入图片描述

3、波形图

在这里插入图片描述

参考资料

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值