STM32之中断方式实现串口通信

2023-05-16

中断方式实现串口通信

  • 一、创建项目
  • 二、编写代码
  • 三、运行
  • 四、总结



一、创建项目


创建一个STM32f103c8STM32CubeMX项目:

在这里插入图片描述


  • SYS设置:
    -

  • RCC设置:
    在这里插入图片描述

  • 时钟树设置,输入72后回车:
    在这里插入图片描述

  • USART1设置:
    Mode设置为Asynchronous
    在这里插入图片描述

使能串口中断:
在这里插入图片描述


  • 设置Project Manager后,生成代码:
    在这里插入图片描述


二、编写代码

打开main.c文件

在文件中定义缓冲区大小:

#define LENGTH 10   // 接收缓冲区大小

在这里插入图片描述


定义缓冲区和标志位:

uint8_t RxBuffer[LENGTH];   // 接收缓冲区
uint8_t Rxflag = 0;    // 标志位,0为接收未完成,1为接收完成

在这里插入图片描述


main()中定义接收成功信息:

HAL_UART_Receive_IT(&huart1, (uint8_t*)RxBuffer, LENGTH);  // 使能接收中断
char data[] = "\nReveive Success\n";  // 接收成功信息

在这里插入图片描述


while循环中发送成功信息和接收到的信息:

if (Rxflag == 1){ // 若数据接收完成
	Rxflag = 0;  // 清除标志位
	HAL_UART_Transmit(&huart1, (uint8_t *)data, 18, 0xFFFF);  // 接收成功信息
	// 发送接收到的字符
	HAL_UART_Transmit_IT(&huart1, (uint8_t*)RxBuffer, LENGTH);
}

在这里插入图片描述


main.c中定义回调函数:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
	if (huart->Instance == USART1){
		Rxflag = 1;  // 设置标志位为1
		HAL_UART_Receive_IT(&huart1, (uint8_t*)&RxBuffer, LENGTH); // 使能接收中断
	}
}

在这里插入图片描述


三、运行

编译并烧录后,打开串口调试工具,设置波特率等:

在这里插入图片描述


打开串口,输入HelloWorld并发送,成功接收:
在这里插入图片描述



四、总结

中断方式不必等待数据的传输过程,只需要在每字节数据收发完成后,由中断标志位触发中断,在中断服务程序中放入新的一字节数据或者读取接收到的一字节数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32之中断方式实现串口通信 的相关文章

  • 解决ubuntu1604联网以后网页还是打不开的问题

    ubuntu系统连接正常的联网的网线但是网页还是打不开 xff0c 所有联网的软件也打不开 xff0c 在路由器工作正常的情况下 xff0c 可能出现的问题为dns解析异常 xff0c 关于dns解析异常的解决方法 xff1a 这段时间在u

随机推荐

  • 操作系统--线程并发实验三

    操作系统 线程并发实验三 一 实验目的 线程的运行时并发的 xff0c 如果互不相干的线程交替运行不会产生问题 但是如果有共享资源 合作关系的线程之间由于交替运行可能产生问题 xff0c 例如偶尔出现程序的结果不正常 理解临界区的概念 xf
  • 安装OOQP遇到问题

    Ubuntu20 04 安装OOQP遇到问题 OOQP安装 OOQP安装 MA27是OOQP的依赖 在安装MA27时容易出现找不到fortran77等情况 xff0c 在配置这些环境时容易出现其他错误导致系统环境出现问题 选择其他版本的安装
  • 15个好用的百度网盘搜索引擎

    15个好用的百度网盘搜索引擎 前言 分享 15 个好用的百度网盘搜索引擎 xff0c 方便大家搜索百度云网盘分享的资源文件 挑出来这 15 个效果还不错 xff0c 都可以正常使用 挑选标准 xff1a 免费 xff0c 大部分不登录可用
  • 操作系统死锁实验六

    操作系统死锁实验六 一 实验目的 如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件那么该进程集合就是死锁的 产生死锁的必要条件 xff1a 互斥 xff1b 请求资源和保持已获得资源不释放 xff1b 不可抢占
  • 修复 Windows11 打不开 Windows安全中心

    修复 Windows 打不开 Windows安全中心 遇到以上问题我们直接上解决方法 win10的话直接WIN 徽标 43 X键 win11 菜单栏输入 PowerShell 管理员启动 管理员权限打开PowerShell xff0c 依次
  • webstorm/idea 配置less环境

    看了一下发现大多数教程少了最关键的一步 如果这个lessc不能自动识别的话 需要手动寻找lessc cmd的路径 xff0c 可以在终端中通过 where lessc查找 复制lessc cmd位置就可以了
  • 自定义http钩子

    简单创建一个自定义http钩子函数 span class token keyword import span span class token punctuation span useState span class token punct
  • React Redux 工具包 Redux Toolkit 初步学习

    Redux 工具包 xff08 Redux Toolkit xff09 的目标是帮助简化常见的 Redux 用例 它并不是你想要用 Redux 做的所有事情的完整解决方案 xff0c 但它应该使你需要编写的许多与 Redux 相关的代码变得
  • 卫星导航模拟器GSS7000测试NTRIP RTK--以Ublox F9P 为例.rtklib原始观测量解算固定解FIX

    GSS7000 Ntrip 测试指南 Ntrip Networked Transport of RTCM via Internet Protocol 通过互联网进行RTCM网络传输的协议 是在互联网上进行RTK数据传输的协议 Ntrip是一
  • Ubuntu网络调试助手安装后无法打开

    转载自 解决Ubuntu网络调试助手安装后无法打开问题
  • 微机原理与接口技术之8060微处理器

    微机原理与接口技术之Intel8060微处理器 这篇bolg主要讲的是8060微处理器的内部结构 xff0c 引脚功能以及总线时序 8086内部结构 xff1a 8086CPU是由执行指令部件EU和总线接口部件BIU两部分注组成 1 EU部
  • Qt的三个基类QObject、QApplication和QWidget

    一 Qt介绍 1 概述 Qt是一个跨平台的C 43 43 图形用户界面应用程序框架 由挪威TrollTech公司出品 1996年Qt进入商业领域 xff0c 它已经成为全世界范围内数千种成功的应用程序的基础 Qt也是流行的Linux桌面环境
  • 锂电池串联放电并联充电自动转换电路

    直接通过5v充电器给串联锂电池组充电可以大大提高充电器的利用率 毕竟现在手机充电器都有 再去买个专用的锂电池平衡充电器又感觉没啥必要 一般给串联锂电池组充电的方案就是通过升压模块将5v升压后再充电 感觉有弊端 1 一般没有平衡充电功能 造成
  • Linux(Ubuntu)配置Cuda,Pytorch,Anaconda

    近期需要在Linux xff08 Ubuntu20 04 xff09 上运行一个工程 xff0c 需要搭建相关环境 xff0c 这是首次在Linux系统上完成anaconda xff0c cuda xff0c 及Pytorch的下载与配置
  • Visual Studio配置OpenGL

    近期工作中需要用到OpenGL 而之前一直是用Opencv工作 xff0c 这就需要在VS上配置OpenGL 因为是首次在VS上配置OpenGL xff0c 以备自己和有需要的小伙伴不时之需 我的VS是2022版的 xff0c 但配置流程各
  • Pycharm终端问题: python : 无法将“python”项识别为 cmdlet、函数、脚本文件或可运行

    发现这个问题的起因是我打算尝试用Django练习做网站 xff0c 需要在Pycharm终端输入一些命令以运行脚本 xff0c 我的Pycahrm配置了anaconda xff0c 但在终端运行命令时一直报错 xff1a python 无法
  • Python:把列表内容按行数写入txt

    事情的起因是我需要把一个元素全为数字的列表按固定列数写入txt文件 xff0c 也就是每行几个元素 xff0c 用逗号隔开 看了一些网上的分享觉得都不太合适 xff0c 于是自己想了一个办法 xff0c 一行代码解决 xff0c 废话少说
  • 解决Git提交代码报错: ERROR: commit xxxxx: missing Change-Id in message footer

    在近期的工作中完成代码修改提交代码时Git报错并提示提交不成功 xff0c 具体错误如下 xff1a 原因是Change Id缺失 至于解决方法 xff0c Git在报错时已经提示了 xff0c 如下图黄框所示 xff1a 首先 xff0c
  • 如何实现用串口助手实时绘制16位数据波形图

    先和大家kuan两句 xff0c 哈哈 因为之前参加智能车想用波形显示来调节PID xff0c 找了很多工具也没有成功 xff0c 心里也知道串口一次就是只能发送八位数据 xff0c 很多时候可以用字符显示16位的 xff0c 但是就不是数
  • STM32之中断方式实现串口通信

    中断方式实现串口通信 一 创建项目二 编写代码三 运行四 总结 一 创建项目 创建一个STM32f103c8的STM32CubeMX项目 xff1a SYS设置 xff1a RCC设置 xff1a 时钟树设置 xff0c 输入72后回车 x