stm32使用hal库向电脑发送数据
文章目录
- USART
- 几种协议(可跳过)
- 实验目的与材料
- 实验目的
- 实验材料
- 软件
- 硬件连接
- HAL库项目创建
- 1、点击ACCESS TO MCU SELECTOR
- 2、选择芯片类型
- 3、可视化配置USART1
- 4、设置项目信息,创建项目
- 代码编写
- HAL库发送数据的函数
- 编写代码
- 烧录与实验现象
- 1、使用FlyMcu下载器将程序烧录到芯片
- 2、实验现象
- 3、波形观察
- 1、配置
- 2、调试
- 3、波形图
- 参考资料
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 charSize:数据长度,单位是字节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、波形图
参考资料
- https://blog.csdn.net/isyuuun/article/details/121042146
- https://blog.csdn.net/weixin_54435584/article/details/127258841
stm32使用hal库向电脑发送数据相关推荐
- 【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)
前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...
- 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)
前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 本文 1首先讲解什么是FMC及SDRAM,W9825G6KH芯片原理,2基于CubeMx创建工程 ...
- STM32CubeMX | 基于STM32使用HAL库实现USB组合设备之多路CDC
STM32CubeMX | 基于STM32使用HAL库实现USB组合设备之多路CDC 本博客完整代码下载地址:https://download.csdn.net/download/qq15347150 ...
- 正点原子STM32(基于HAL库)5
目录 SRAM 实验 存储器简介 SRAM 方案简介 硬件设计 程序设计 程序流程图 程序解析 下载验证 内存管理实验 内存管理简介 硬件设计 程序设计 程序流程图 程序解析 下载验证 SD 卡实验 ...
- 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(二)
前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 上一讲我们说了CubeMX配置SDRAM的一些基本配置,还有FMC跟SDRAM的讲解,这一讲我们 ...
- 【STM32】HAL库 STM32CubeMX教程十四---SPI
前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 在我们的HAL库中,对硬件SPI函数做了很好的集成,使得之前SPI几百行代码,在HAL库中,只需 ...
- 【STM32】HAL库 STM32CubeMX教程十---DAC
前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...
- STM32的HAL库分析及使用
STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配 ...
- STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片
STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片 STM32基础工程生成 首先使用STM32CUBEMX生成STM32的基础工程,配置时钟到7 ...
最新文章
- 劳动节,这样的自动叠衣服机器人给我来10个
- 如何使用MatPlotLib绘制出具有两个 Y 轴的曲线图?
- 天问电子少年团DIY作品
- 观山湖区计算机培训班学校,2020年观山湖区教育系统办公室主任培训顺利开班...
- 如果沟通有范式,它会是怎么样子?
- 微型计算机课程设计报警器,微型计算机课程设计声光报警器的设计与制作精选.doc...
- 从菜鸟到专家的五步编程语言学习法
- 二叉树的遍历:先序 中序 后序遍历的递归与非递归实现及层序遍历
- matlab人工势场法三维演示图,运动规划入门 | 5. 白话人工势场法,从原理到Matlab实现...
- 小甲鱼零基础入门python二十一课课后题_小甲鱼Python第二十一讲课后习题
- 从0 开始 WPF MVVM 企业级框架实现与说明 ---- 第十讲 WPF 系统MainWindow
- 小乐乐与二段数(2019哈理工新生赛第20题)
- BZOJ1646[Usaco2007 Open] 抓住那头牛
- win10专业版激活
- PR2019 (五)几种视频转场特效
- upgrade pip‘ command
- 抗议浪潮不断,峰会笑声阵阵
- html里alert怎么设置确定和取消,自定义alert 确定、取消功能(示例代码)
- 金蝶云星空插件开发调试教程示例
- 恢复计算机管理员权限软件,帮您修复win10系统管理员权限的恢复步骤