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,一经查实,立即删除!

相关文章

java接口+Java支持多继承吗?

java接口Java支持多继承吗? 1.接口使用interface(接口)关键字修饰 2.接口中的方法默认都是全局抽象方法,即默认public abstract修饰 3.接口不能直接new对象,必须通过new子类创建对象(多态向上转型&#xff…

stm32滴答计时器_STM32的系统滴答定时器(Systick)

1.systick时钟来源2.SysTick库函数3.源码/***}*//** defgroup SysTick_clock_source*{*/#define SysTick_CLKSource_HCLK_Div8 ((uint32_t)0xFFFFFFFB)#define SysTick_CLKSource_HCLK ((uint32_t)0x00000004)#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) Sy…

Java包装类与基本数据类型的自动 手动装箱与自动 手动拆箱

Java包装类与基本数据类型的自动 手动装箱与自动 手动拆箱 **自动装箱与拆箱**,实现代码如下: /*** 装箱 : 基本数据类型-----> 包装类* 拆箱: 包装类-------> 基本数据类型* author **/ public class Test1 {public sta…

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

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

java 双等号(==) 与equals方法的介绍和区别

java 双等号() 与equals方法的介绍和区别 1.基本数据类型与equals方法 用于比较基本数据类型时,比较的是值用于比较引用数据类型时,比较的是地址equals方法在Object类中比较的也是地址,因为在低层也是使用进行比较St…

verilog时钟翻转怎么写_verilog实时可调时钟代码

module clock(clk,out,reset,cin,ocom,count,countmin,tgm,tdm,tgs,tds);output[3:0] ocom;output[7:0] out;output count,countmin;input cin,clk,reset;input tgm;//高位的分input tdm;//地位的分input tgs;//高位的秒input tds;//地位的秒reg [7:0] out_s;reg[7:0] out_min;…

Java ArrayList与LinkedList数据结构和特点

Java ArrayList与LinkedList数据结构和特点 1. ArrayList 数据结构: ArrayList低层是实现的是一个Object类型的数组(空间连续,类型相同)当我们调用ArrayList无参构造方法,将会创建一个Object类型的**空**数组当我们第…

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

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

Java HashMap与Hashtable数据结构和特点+HashSet简述

Java HashMap与Hashtable数据结构和特点HashSet简述 1.HashMap HashMap就是基于数组和链表的数据结构:JDK1.7使用 数组单向链表;JDK1.8使用 数组单向链表红黑树 HashMap有两个重要的参数: 一个是负载因子 0.75:表示数组使用率达…

aj6 stamps storm_亲友限定的 AJ 6 要发了?3 月好鞋发售清单 for girls

原标题:亲友限定的 AJ 6 要发了?3 月好鞋发售清单 for girls🌸🌸🌸Air Jordan 1 Low Slip “Chicago”Color:Varsity Red/Black/WhiteStyle Code:BQ8462-601Price:$110adidas WMNS U…

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

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

java中常见的专业术语单词缩写,看你认识几个

java中常见的专业术语单词缩写,看你认识几个 单词全称单词缩写中文意思备注Garbage CollectionGC垃圾回收Object Oriented ProgrammingOOP面向对象程序设计Document Object ModelDOM文档对象模型Browser Object ModelBOM游览器对象模型uniform resource locatorurl…

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)…

八大基本数据类型、数组和包装类默认值

八大基本数据类型、数组和包装类默认值 1.八大基本数据类型 Java八种基本数据类型总结序号数据类型大小/字节封装类默认值可表示数据范围1byte1Byte0-128~1272short2Short0-32768~327673int4Integer0-2147483648~21474836474long8Long0-9223372036854775808~9223372036854775…

解决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面板、右键菜单和特性面板倒是都提供了快速选择的功能,快速选择功能应该是借鉴选择过滤器开…