hal 双串口同时接收丢失数据_【STM32Cube_06】使用USART发送和接收数据(查询模式)...

76536d063f4ac43870d060b57056c9d4.png

寻求更简洁舒适的阅读体验,请移步Mculover666的个人博客:

【STM32Cube_06】使用USART发送和接收数据(查询模式)​www.mculover666.cn

本篇文章主要介绍如何使用STM32CubeMX初始化STM32L431RCT6的USART,并使用查询模式发送数据,使用查询模式接收数据。


1. 准备工作

硬件准备

  • 开发板 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi):

7157c1df717315399db5032a3e6366b3.png

软件准备

  • 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码;
  • 准备一个串口调试助手,这里我使用的是Serial Port Utility
Keil MDK和串口助手Serial Port Utility 的安装包都可以在文末关注公众号获取,回复关键字获取相应的安装包:

835b1263d73bd4f6ca71bc6ac285bfef.png

2.生成MDK工程

选择芯片型号

打开STM32CubeMX,打开MCU选择器:

0d3463fe7d31b7969d7626f377f1e99c.png

搜索并选中芯片STM32L431RCT6:

f50e5c6b94ab08a53905ac0f04bf6891.png

配置时钟源

  • 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
  • 如果使用默认内部时钟(HSI),这一步可以略过;

这里我都使用外部时钟:

b3c1f4f989871878d493ea92d41f71c2.png

配置串口

小熊派开发板板载ST-Link并且虚拟了一个串口,原理图如下:

7359e86606f04be049f25760353ea75e.png

这里我将开关拨到AT-MCU模式,使PC的串口与USART1之间连接。

接下来开始配置USART1

819d31c7cab0efc1030932c5c2f5dca4.png

配置时钟树

STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可:

fda0ce17723f4c03b0f63785578afcd9.png

e8276464b19815bb661daf3c43793c25.png

生成工程设置

36ea4b28a023e1b265360d913748d182.png

代码生成设置

最后设置生成独立的初始化文件:

9ae7e8609d08055834482f54ebb6080f.png

生成代码

点击GENERATE CODE即可生成MDK-V5工程:

b9e7d977f6d43cad174233ab02a0d06b.png

3. 在MDK中编写、编译、下载用户代码

编写查询模式发送和接收代码

编写 main 函数如下:

int main(void)
{/* USER CODE BEGIN 1 */char str[12] = "Hello Worldn";char recv_buf[12] = {0};/* USER CODE END 1 */HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */HAL_UART_Transmit(&huart1, (uint8_t*)str, 12, 0xFFFF);/* USER CODE END 2 */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 *///接收12个字节的数据,不超时if(HAL_OK == HAL_UART_Receive(&huart1, (uint8_t*)recv_buf, 12, 0xFFFF)){//将接收到的数据发送HAL_UART_Transmit(&huart1, (uint8_t*)recv_buf, 12, 0xFFFF);}}/* USER CODE END 3 */
}

编译代码

编译整个工程:

b9d1c0ccad51a117defa2129f127c7f1.png

设置下载器

1d26417a28582fdfeb0ef60eb90a5917.png

e91a45483297a3fdcda5e74202d7311e.png

实验现象

下载运行后,实验现象如下:

cac917b39f55b752c516d76cfd99d968.png

至此,我们已经学会了如何配置USART使用查询模式发送和接收数据,下一节将讲述如何配置USART使用中断模式接收数据。

更多精彩文章及资源,请关注我的微信公众号:『mculover666』。

e62a4f546b5bc1cf1d25be0cc8f42a82.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么叫冷备用状态_新密5P加工中心冷油机生产厂家电话【瀚信德】

新密5P加工中心冷油机生产厂家电话【瀚信德】以上如有异常,请尽快通知分司派维修人员处理。油冷机的工作原理有什么油冷机也叫冷油机,根据制冷系统原理,低温低压的液态冷媒在蒸发器里面与周围水进行热交换蒸发器吸收油的热量,蒸发…

多线程 循环 锁_大多数人还不清楚的iOS多线程

你不知道的的 iOS 多线程程序员用有限的生命去追求无限的知识。有言在先首先我不是故意要做标题党的,也不是我要炒冷饭,我只是想换个姿势看多线程,本文大部分内容在分析如何造死锁,奈何功力尚浅,然而再浅,也…

学校为什么要单位接收函_学校、小区运动场为什么要选择塑胶跑道

随着人们生活水平的不断提高,科技的日新月异,各行各业都向着更加健康环保安全舒适的方向迈进。就拿小区、学校的运动场所地坪为例,传统的“沙土跑道”已经被运动塑胶跑道所替代。那么运动场为什么会选择塑胶跑道呢? 塑胶跑道又称全…

pitstop插件使用说明_【学员分享】程序员效率神器,最常用VIM插件安装大全

相信大家多次被推荐用vim作为编辑程序,知道vim编辑有很多优点,但是vim初始界面太原始了,安装了之后只能用来编辑,如果要运行就需要退出去运行,麻烦死了。回想用现成的IDE是多么的舒服。但是为了更好的学习,…

JVM思维导图、正则表达式符号图、企业内部开发流程图

JVM思维导图、正则表达式符号图、企业内部开发流程图 1.JVM思维导图: 2.正则表达式符号图: 3.企业内部开发流程图:

萧县机器人_全国总决赛第一名!萧县杨楼的这位学生厉害了

 提示:点击上方"萧县关注"↑免费订阅本刊点击上方关注我们,免费订阅更多精彩内容&…

关于JSP页面无法加载css,游览器访问jsp页面样式未生效导致乱序

关于JSP页面无法加载css,游览器访问jsp页面样式未生效导致乱序 1.修改自己过滤器中对编码格式的修改 如图: 代码如下: public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOE…

将视图转为image_JavaScript二进制数组(2)TypedArray视图

ArrayBuffer对象作为内存区域可以存放多种类型的数据。同一段内存,不同数据有不同的解读方式,这种解读方式称为“视图(view)”。ArrayBuffer有两种类型的视图,一种是类型化数组视图(TypedArray)…

解决IDEA中maven工程的jsp、jstl依赖导入了 ,但是 jsp页面的uri却不提示(手动输上也报红)

解决IDEA中maven工程的jsp、jstl依赖导入了 ,但是 jsp页面的uri却不提示(手动输上也报红) 出现原因:idea内有缓存 解决办法:File --> Invalidate Caches / Restart… --> lnvalidate and Restart idea版本&#…

空格 过滤多个_CAD选择过滤器的运算符如何使用?

选择过滤器FILTER在CAD早期版本中是扩展工具的一个功能,到了高版本变成标配的功能,但在浩辰CAD的菜单或工具面板中我还找到选择过滤器的命令。浩辰CAD面板、右键菜单和特性面板倒是都提供了快速选择的功能,快速选择功能应该是借鉴选择过滤器开…

各层作用_终于弄明白了 Singleton,Transient,Scoped 的作用域是如何实现的

一:背景1. 讲故事前几天有位朋友让我有时间分析一下 aspnetcore 中为什么向 ServiceCollection 中注入的 Class 可以做到 Singleton,Transient,Scoped,挺有意思,这篇就来聊一聊这一话题,自从 core 中有了 S…

权限管理系统_在Gitee狂揽11K Star!这个SpringCloud的权限管理系统你必须知道

SpringCloud 大家都很熟悉了,它作为一套完整的微服务解决方案,广受 Java 开发者们的好评, 今天就为大家介绍一款 Gitee 上的王牌项目,基于 SpringCloud 的权限管理系统——Pig。项目名称:Pig项目作者:pig4c…

导出排除的表_excel拆分实例:如何快速制作考勤统计分析表

编按:面对新的统计需求,很多人会一下变懵,不知如何办。如果涉及的统计有一千多行数据,哭的心思都有了:什么时候才能下班哟!今天老菜鸟通过考勤统计分析表实例分享自己面对新统计需求的解决方法:…

python 数据字典用法_python数据字典的操作

一、什么是字典?字典是Python语言中唯一的映射类型。映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表。字典对象是可变的,它是一个容器类型,能存储任意个数…

双系统安装deepin20_win10deepin15.10双系统安装教程

第二步:下载深度启动盘制作工具深度启动盘制作工具地址第三步:制作U盘启动盘打开第二部下载的启动盘制作工具,并准备一个u盘插入待装系统的电脑,选择镜像文件后,下一步选择磁盘并勾选格式化磁盘,点下一步开…

ubuntu19 安装git_在Ubuntu 18.04上安装Git

步骤1.首先,通过运行以下命令确保您的系统和apt包列表完全更新:apt-get update -yapt-get upgrade -y第2步。在Ubuntu 18.04上安装Git。现在让我们安装git:apt install git您可以使用以下命令来检查已安装的git版本:$ git --versi…

mysql数据库开发环境_MacOS下搭载开发环境之数据库篇(Mysql + Navicat)

一、安装Mysql1、官网下载mysql的tar包(提示:建议vpn环境下载)2、解压并安装tar包# 移动解压后的二进制包到安装目录sudo mv mysql-5.7.19-osx10.9-x86_64 /usr/local/mysql# 更改 mysql 安装目录所属用户与用户组cd /usr/localsudo chown -R root:wheel mysql# 初始…

mysql alter 唯一键_MySQL列属性 之 唯一键

MySQL列属性 之 唯一键唯一键唯一键:每张表往往有多个字段需要具有唯一性,数据不能重复,但是在每张表中,只能有一个主键,因此 唯一键就是用来解决表中多个字段需要具有唯一性的问题。例如身份证号码应该每一行的记录不…

wpf 使用位图画图为什么断断续续_WPF的未来是微软WinUi!

WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界…

antd新增一行页码不正确_antd-Table@4.x对rowKey属性的重构

时间:2020/04/26 ,转载请注明出处。写在前面antd团队于2020年2月发布了酝酿已久的antd4.0版本,对样式的调整、部分组件逻辑的重构都进行了较大改动,本文针对Table的rowKey属性重构作分析。由一个mistake带来的思考在数据治理模块的…