文章目录

  • 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库向电脑发送数据相关推荐

  1. 【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)

    前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...

  2. 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 本文 1首先讲解什么是FMC及SDRAM,W9825G6KH芯片原理,2基于CubeMx创建工程 ...

  3. STM32CubeMX | 基于STM32使用HAL库实现USB组合设备之多路CDC

    STM32CubeMX | 基于STM32使用HAL库实现USB组合设备之多路CDC 本博客完整代码下载地址:https://download.csdn.net/download/qq15347150 ...

  4. 正点原子STM32(基于HAL库)5

    目录 SRAM 实验 存储器简介 SRAM 方案简介 硬件设计 程序设计 程序流程图 程序解析 下载验证 内存管理实验 内存管理简介 硬件设计 程序设计 程序流程图 程序解析 下载验证 SD 卡实验 ...

  5. 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(二)

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 上一讲我们说了CubeMX配置SDRAM的一些基本配置,还有FMC跟SDRAM的讲解,这一讲我们 ...

  6. 【STM32】HAL库 STM32CubeMX教程十四---SPI

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 在我们的HAL库中,对硬件SPI函数做了很好的集成,使得之前SPI几百行代码,在HAL库中,只需 ...

  7. 【STM32】HAL库 STM32CubeMX教程十---DAC

    前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...

  8. STM32的HAL库分析及使用

    STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配 ...

  9. STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片

    STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片 STM32基础工程生成 首先使用STM32CUBEMX生成STM32的基础工程,配置时钟到7 ...

最新文章

  1. 劳动节,这样的自动叠衣服机器人给我来10个
  2. 如何使用MatPlotLib绘制出具有两个 Y 轴的曲线图?
  3. 天问电子少年团DIY作品
  4. 观山湖区计算机培训班学校,2020年观山湖区教育系统办公室主任培训顺利开班...
  5. 如果沟通有范式,它会是怎么样子?
  6. 微型计算机课程设计报警器,微型计算机课程设计声光报警器的设计与制作精选.doc...
  7. 从菜鸟到专家的五步编程语言学习法
  8. 二叉树的遍历:先序 中序 后序遍历的递归与非递归实现及层序遍历
  9. matlab人工势场法三维演示图,运动规划入门 | 5. 白话人工势场法,从原理到Matlab实现...
  10. 小甲鱼零基础入门python二十一课课后题_小甲鱼Python第二十一讲课后习题
  11. 从0 开始 WPF MVVM 企业级框架实现与说明 ---- 第十讲 WPF 系统MainWindow
  12. 小乐乐与二段数(2019哈理工新生赛第20题)
  13. BZOJ1646[Usaco2007 Open] 抓住那头牛
  14. win10专业版激活
  15. PR2019 (五)几种视频转场特效
  16. upgrade pip‘ command
  17. 抗议浪潮不断,峰会笑声阵阵
  18. html里alert怎么设置确定和取消,自定义alert 确定、取消功能(示例代码)
  19. 金蝶云星空插件开发调试教程示例
  20. 恢复计算机管理员权限软件,帮您修复win10系统管理员权限的恢复步骤

热门文章

  1. 怎样建设稳定性基础架构?《高可用及容灾架构体系化建设》上篇
  2. java毕业设计乒乓球俱乐部管理源码+lw文档+mybatis+系统+mysql数据库+调试
  3. SDUSTOJ 1466 - 编写函数:递归求逆序 (Append Code)
  4. 营救天使(java)
  5. Python半双工聊天
  6. 分类网络位置测试图片生成
  7. 关于免费获得WPS会员自动邀请助力的JAVA项目分享
  8. 简单介绍订单号或者流水号的生成方法
  9. 服务器系统崩溃怎么拷里面文件,电脑系统崩溃怎么把桌面文件拷到u盘?
  10. SAP License:你是SAP几级?