STM32+CubeMX零基础串口收发全攻略

这篇具有很好参考价值的文章主要介绍了STM32+CubeMX零基础串口收发全攻略。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

第一章:初学单片机,使用STM32进行点灯



前言

本文主要是解决简单的串口通信


提示:以下是本篇文章正文内容,下面案例可供参考

一、使用到的装置和软件

本案例主要涉及到的装置和软件有:
1.一块STM32F103ZET6的开发板(也可使用其它板子)
2.ST-LINKV2(有钱的也可使用J-link等)一个与杜邦线若干
3.涉及到的软件有三个分别是:STM32CubeMX(用于生成文件),Keil uVision5(用于编程),XCOM V2.2(用于查看数据)

stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件

4.USB TO TTL(USB转TTL串口)
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件

二、串口收发

1.STM32CubeMX配置

基本配置和第一章点灯案例一样(需要的可以在系列文章目录里面查看第一章),这里主要是对串口的配置:
串口配置如图所示:
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件
Connectivity中UART(通用异步收/发器)、USART(通用同步/异步收/发器),从名字上可以看出,USART在UART基础上增加了同步功能,即USART是UART的增强型。

我这里使用的是USART1(由于本案例选择的是异步串口,所以选择UART也可),在选择好了Mode之后一般会自动选择引脚A10(RX)和A9(TX)(注意在连接单片机和计算机时,单片机的RXD接计算机的TXD,单片机的TXD接计算机的RXD)

在选好之后我们看下面协议的配置:
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件
Baud Rate 波特率:如果想要稳定一点的话可以选择9600这些,想要快一点就可以选择115200
Word Length 字长(数据位和校验位的长度之和)
Panity 校验位:None是无校验,Even是偶校验,Odd是奇校验
Stop Bits 停止位

可以点击GPIO Settings查看是否是自己要配的串口:
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件
我这里是PA9和PA10,如果要选择其它的串口可以鼠标左键单击右边芯片上的对应引脚进行选择。
然后我们就可以点击生成文件了

2.keil5的使用

(1)阻塞式收发

在main.c文件中写入代码:
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件

		HAL_UART_Transmit(&huart1,(uint8_t*)"Hello",5,0xFFFF);//阻塞式发送函数,第一个参数存放串口一的所有数据,
		HAL_Delay(1000);

然后运行程序没有报错就使用USB TO TTL 将单片机与电脑连接并烧录程序

打开XCOM V2.2软件对数据进行监控
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件
串口选择:一般会自动分配到所在串口,如果可以打开设备管理器查看:
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件
在串口选择下面的选项要与前面在STM32CubeMX里设置的内容相同,然后打开串口,就可以接收到数据了(每隔一秒就会发送一句 Hello )。
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件

使用printf()进行输出

还是在main.c文件中引入头文件
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件

#include<stdio.h>

重写fputc()这个c标准库函数(printf()在c标准库函数实质是一个宏,实际是调用fputc()函数):
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件

int fputc(int c,FILE *stream)
{
	uint8_t ch[1]={c};
	HAL_UART_Transmit(&huart1,ch,1,0xFFFF);
	return c;
}

先注释掉原来的语句,使用printf()输出
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件
然后编译,没有报错就进行烧录。烧录完成之后就可以打开XCOM查看数据了:
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件
如果此时查看不到,经检查没有出现硬件以及未复位的问题,就打开魔法棒,点击Target,勾选如下图所示选项:

stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件
然后重新进行烧录就能查看到结果了

发送数据

还是在main.c文件中写入代码:
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件

uint8_t buf[5];
		HAL_UART_Receive(&huart1,buf,3,0XFFFF);
		HAL_UART_Transmit(&huart1,buf,3,0xFFFF);

然后重新进行烧录,点击XCOM,打开串口,在发送窗口输入要发送的字符串,然后点击右边的发送按钮,在接收窗口就能看见单片机返回的字符串。
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件

(2)中断式收发

要使用中断式收发,先要在stm32cubemx里面将串口中断打开:
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件
然后再重新生成代码

将数组定义成全局变量:
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件

uint8_t buffer[5];

再写一个回调函数,将接收到的数组发送回去并开启下一次的接收:
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	HAL_UART_Transmit_IT(&huart1,buffer,3);
	HAL_UART_Receive_IT(&huart1,buffer,3);
	
}

将第一次触发中断的语句放在while(1)之前
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件

HAL_UART_Receive_IT(&huart1,buffer,3);

后续的串口操作都是由中断来进行的,此时while(1)中没有其它函数,我们可以在while(1)中编写其它的逻辑,基本不受串口影响。
对程序进行运行和烧录,我们打开串口随便发送三个字符,可以看到字符成功的被返回回来了。
stm32cubemx 串口,单片机,stm32,单片机,嵌入式硬件


总结

以上便是串口的使用攻略了,除此之外还可以使用MDA方式进行收发,这里就暂时不进行讲解了。文章来源地址https://www.toymoban.com/news/detail-548294.html

到了这里,关于STM32+CubeMX零基础串口收发全攻略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32系列——串口收发数据基础

    串行接口相关知识 两种通信方式:并行通信与串行通信,并行通信传输速度快但是占用的引脚资源多,串行通信传输速度慢但是占用的引脚资源少。 三种模式:单工、半双工、全双工 异步串行通信:通信双方在没有同步时钟的前提下,将一个字符(包括特定的附加位)按位进

    2024年02月11日
    浏览(36)
  • HackTheGame游戏全攻略

    游戏链接 链接: 百度网盘 请输入提取码 提取码:bu1w HackTheGame游戏的玩法: 您将扮演一个黑客的角色,接受各种各样的任务,在不被发现的情况下,使用一些工具入侵他人的电脑,服务器并完成窃取资料,粉碎文件,植入病毒等操作.您有一共有两次机会,第三次被追踪到的话,您就会被捕

    2024年02月05日
    浏览(78)
  • MongoDB 索引全攻略

    目录 一、索引介绍         1.1 单字段索引         1.2 复合索引         1.3 多键索引         1.4 主键索引         1.5 TTL 索引         1.6 地理空间索引         1.7 哈希索引         1.8 创建索引时注意事项         1.9 索引效果查看  二、索引实现原理         2.1 为

    2024年04月27日
    浏览(69)
  • Github搭建个人博客全攻略

    Github是开发者的代码仓库,一个开源和分享社区。 本文前提是已注册github账号。 假设用户名为MyName 进入个人主页(https://github.com/用户名),选择Repositories,点击New Repository name填入MyName.github.io,即MyName/ MyName.github.io ,点击Create Repository 安装Git或TortoiseGit(后者添加环境变量)

    2024年02月16日
    浏览(63)
  • Jenkins 插件安装方式全攻略

    在Jenkins 的安装向导页面中, 会有一步是否安装推荐的插件, 可以直接进行安装, 也可以跳过。 对于安装机器联网的状况, 安装插件相对方便,直接搜索插件安装, 但是也可能会出现无法在线安装的状况, 原因解析及解决方法 参考: Jenkins 在Windows下插件无法安装问题解

    2023年04月21日
    浏览(70)
  • 谷歌账号注册流程全攻略

    一、访问谷歌账号注册页面 首先,你需要访问谷歌账号注册页面。你可以直接点击此链接,或者在谷歌首页点击右上角的“登录”按钮,在弹出的登录框中点击“创建帐号”。 在注册页面,你需要填写以下个人信息: 名字:输入你的名字。 姓氏:输入你的姓氏。 用户名:

    2024年02月05日
    浏览(57)
  • 新手搭建服装小程序全攻略

    随着互联网的快速发展,线上购物已经成为了人们日常生活中不可或缺的一部分。服装作为人们日常消费的重要品类,线上化趋势也日益明显。本文将详细介绍如何从零开始搭建一个服装小程序商城,从入门到精通的捷径,帮助你快速掌握小程序商城的制作方法和技巧。 首先

    2024年02月21日
    浏览(49)
  • 【STM32笔记】STM32的串口数据收发基础(四)(USART DMA模式)

         在STM32中编写串口通信数据收发有三种方式: 轮询模式 (阻塞方式), 中断模式 (非阻塞方式)以及 DMA模式 。      打开STM32CubeMX,前部分配置流程如串口数据收发基础(三)节里一样。配置好USART1的基本参数,开启定时器中断后,接下来就要开启USART1的DMA。

    2024年02月03日
    浏览(41)
  • 开发巴西市场全攻略,外贸人收藏

    巴西联邦共和国位于南美洲东部,是南美洲资源最丰富,经济活力和经济实力最强的国家。巴西作为拉丁美洲的出口大国,一直是一个比较有潜力的市场,亦是我国外贸公司和独立外贸人集群的地方。 2021年巴西贸易概况 ✦ 1、2021年巴西贸易创纪录 2021年,巴西的对外贸易以

    2024年02月05日
    浏览(62)
  • TortoiseSVN源码安装与迁移全攻略

    一、前言 随着版本控制系统的普及,越来越多的开发者和团队开始使用SVN(Subversion)来管理代码。本文将详细介绍TortoiseSVN的源码安装及迁移过程,帮助您轻松掌握这一版本控制工具。 二、TortoiseSVN源码安装 依赖环境安装,apr、apr-util、zlib、sqlite apr 环境   apr-util 环境 zl

    2024年01月24日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包