当前位置: 首页 > news >正文

STM32CubeMX【串口收发USART】

第一步,配置cubemx

配置好点右上角生成

第二步,串口方式

阻塞式发送

英文、中文正常、浮点有口

/* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();//配置完自动生成的

发送到串口助手上 

while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 *///等想发的数据都发完了才会结束//5为字符串长度,0xFFFF为超时时间超过这个时间其余的数据就不发了HAL_UART_Transmit(&huart1,(uint8_t*)"Hello",5,0xFFFF);//&huart1是串口句柄 huart1存了串口的所有数据//(uint8_t*)"Hello"【字符串常量】需要传uint8_t*HAL_Delay(1000);}

从串口助手上发到单片机,再发回串口助手 

while(1){
uint8_t buf[5];//缓存一下//接收数据,并返回到串口助手
HAL_UART_Receive(&huart1,(uint8_t*)buf,3,0xFFFF);
HAL_UART_Transmit(&huart1,(uint8_t*)buf,3,0xFFFF);
}

 printf函数进行串口发送

#include <stdio.h>//引入标准库头文件
//重写fputc,printf內部是通过它调用的
int fputc(int c,FILE*stream)
{uint8_t ch[1]={c};HAL_UART_Transmit(&huart1,ch,5,0xFFFF);return c;
}
//重写fgetc,scanf內部是通过它调用的
int fputc(FILE*stream)
{uint8_t ch[1];HAL_UART_Receive(&huart1,ch,1,0xFFFF);return ch[0];
}
while(1){
int val=0;
scanf("%d",&val);
printf("%d\r\n",val);//回车并换行}

使用中断方式(每个字节都会进入一次中断)

不需要等待就能发送完毕

先去NVIC使能中断,调优先级(编号越大优先级越低)

uint8_t buffer[5];//定义成全局变量防止被销毁int main()
{
//第一次触发中断接收语句
HAL_UART_Receive_IT(&huart1,buffer,3);while(1){}
return 0;
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{//当完成了所有数据的发送时就会进入这个回调
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{//每发一个字节都会进入中断HAL_UART_Transmit_IT(&huart1,(uint8_t*)buffer,3);//不需要等待就能发送完毕//接收数据,并返回到串口助手HAL_UART_Receive_IT(&huart1,buffer,3);
}

DMA(搬运数据)方式(固定数据够了才发)

固定长度数据

uint8_t buffer[5];//定义成全局变量防止被销毁int main()
{
//第一次触发中断接收语句,dma与中断不同是会接收完固定长的数据
HAL_UART_Receive_DMA(&huart1,buffer,3);while(1){}
return 0;
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{//当完成了所有数据的发送时就会进入这个回调
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{//不用每发一个字节都会进入中断HAL_UART_Transmit_DMA(&huart1,(uint8_t*)buffer,3);//不需要等待就能发送完毕//接收数据,并返回到串口助手HAL_UART_Receive_DMA(&huart1,buffer,3);
}

空闲中断*

不定长接收,基于DMA的修改

uint8_t buffer[5];//定义成全局变量防止被销毁int main()
{
//第一次触发中断接收语句,dma与中断不同是会接收完固定长的数据
HAL_UART_Receive_DMA(&huart1,buffer,3);__HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);while(1){}
return 0;
}

若不是0就是空闲中断了

extern uint8_t buffer[5];//it.c文件里得声明一下

 

3-用来获取DMA计数值

void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{//当完成了所有数据的发送时就会进入这个回调
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{//不用每发一个字节都会进入中断HAL_UART_Transmit_DMA(&huart1,(uint8_t*)buffer,3);//不需要等待就能发送完毕//接收数据,并返回到串口助手HAL_UART_Receive_DMA(&huart1,buffer,3);
}

第三步,串口调试助手 

串口接线A10RX接TX,A9TX接RX

需要下USB转TTL的串口驱动,下正点原子的XCOM

保证波特率、数据位....都一致,(该串口助手是GB2312编码

keil中应该也得设置成GB2312编码才能正常传输中文

相关文章:

STM32CubeMX【串口收发USART】

第一步&#xff0c;配置cubemx 配置好点右上角生成 第二步&#xff0c;串口方式 阻塞式发送 英文、中文正常、浮点有口 /* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();//配置完自动生成的 发送到串口助手上 while (1){/* USER CODE…...

【学术会议投稿】Java Web开发实战:从零到一构建动态网站

【会后3-4个月检索|IEEE出版】第五届人工智能与计算机工程国际学术会议&#xff08;ICAICE 2024&#xff09;_艾思科蓝_学术一站式服务平台 更多学术会议请看&#xff1a; https://ais.cn/u/nuyAF3 目录 引言 一、Java Web开发基础 1. Java Web开发简介 2. 开发环境搭建 …...

[Unity]内存优化

参考&#xff1a; Unity 内存优化 | 新诸子Unity内存优化&#xff08;来自uwa&#xff09; - weigang - 博客园Unity游戏内存优化——以TileMatch为例https://github.com/wechat-miniprogram/minigame-unity-webgl-transform/blob/main/Design/OptimizationMemory.mdunity内存…...

FreeRTOS工程创建,创建多任务程序,基于汇编对ARM架构的简单理解

FreeRTOS工程创建 下载STM32CubeMX尽量找网盘下载&#xff08;只是建议&#xff0c;没有说官网不行&#xff09; 1.创建 STM32CubeMX 工程 &#xff08;1&#xff09;双击运行 STM32CubeMX&#xff0c;在首页面选择“Access to MCU Selector”&#xff0c;如下图所示&#xff1…...

C++STL--------list

文章目录 一、list链表的使用1、迭代器2、头插、头删3、insert任意位置插入4、erase任意位置删除5、push_back 和 pop_back()6、emplace_back尾插7、swap交换链表8、reverse逆置9、merge归并10、unique去重11、remove删除指定的值12、splice把一个链表的结点转移个另一个链表13…...

M1 Mac打开Jupyter notebook

当我成功安装了Jupyter之后&#xff0c;发现无法通过 jupyter notebook 开始工作。 最初的问题是 zsh command not found 该问题是个路径问题&#xff0c;通过添加PATH环境变量就行了&#xff0c;设置环境变量时需要注意&#xff0c;zshrc和bash_profile中都可以设置&…...

docker 仓库之harbor详解

Harbor 是一个开源的企业级容器镜像仓库&#xff0c;由 VMware 提供。它基于 Docker 分布式应用程序框架构建&#xff0c;旨在解决企业对容器镜像存储、安全性和可管理性的需求。Harbor 提供了丰富的功能&#xff0c;包括用户权限管理、镜像复制、审计日志、漏洞扫描等&#xf…...

【环境变量】windons的Path

在 Windows 操作系统中&#xff0c;“Path” 是一个重要的环境变量&#xff0c;它定义了操作系统在执行命令时搜索可执行文件的目录。简而言之&#xff0c;当你在命令行&#xff08;例如 cmd 或 PowerShell&#xff09;中输入一个命令时&#xff0c;Windows 会查看 “Path” 环…...

go语言里的切片

package mainimport "fmt"func main() {// 创建一个长度为3&#xff0c;容量为5的整数切片var numbers make([]int, 3, 8)// 打印初始状态printSlice(numbers) // 输出: len3 cap5 slice[0 0 0]// 向切片添加元素numbers append(numbers, 1, 2)// 再次打印&#xf…...

革新你的智能体验:AIStarter 3.1.1正式版现已上线【安全认证】ai应用市场,数字人,ai绘画,ai视频,大模型,工作流因有尽有

在这个日新月异的技术时代里&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着我们的生活与工作方式。作为行业内的先锋之一&#xff0c;我们非常高兴地宣布&#xff1a;经过团队不懈努力以及严格的测试与优化后&#xff0c;AIStarter 3.1.1新版现已震撼…...

【练习17】数组中的最长连续子序列

数组中的最长连续子序列_牛客题霸_牛客网 (nowcoder.com) 题目分析&#xff1a;排序双指针 排序后&#xff0c;判断是否连续&#xff1a;后一个数-前一个数1 排序后&#xff0c;判断是否重复&#xff1a;后一个数-前一个数0 public class Solution {public int MLS (int[] arr)…...

2024 最适合 Web 开发者的 9 款 Chrome 扩展

随着 2024 年的进展&#xff0c;Chrome 扩展程序已成为 Web 开发人员工具包中不可或缺的一部分&#xff0c;在浏览器中提供强大的功能。在这篇文章中&#xff0c;我们将探讨今年在 Web 开发社区掀起波澜的 9 大 Chrome 扩展程序。 1.Lighthouse https://chromewebstore.google…...

React综合指南(二)

https://activity.csdn.net/creatActivity?id10787 #1024程序员节&#xff5c;征文# 21、 React中的状态是什么&#xff1f;它是如何使用的&#xff1f;&#xff1f; 状态是 React 组件的核心&#xff0c;是数据的来源&#xff0c;必须尽可能简单。基本上状态是确定组件呈现…...

XML\XXE漏洞基本原理

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理XXE漏洞的相应信息 XML与XXE漏洞 这个东西有许多叫法&#xff0c;XML漏洞与XXE漏洞差不多都是一个东西。 这个漏洞是出现在XMl上的&#xff0c;然后可以叫他XXE注入漏洞。 XML简介 XML是一种数据的传输…...

uniapp小程序自定义聚合点

注&#xff1a; 1.默认的聚合点可以点击自动展示子级点位&#xff0c;但是自定义的聚合点在ios上无法触发markerClusterClick的监听&#xff0c;至今未解决&#xff0c;不知啥原因 2.ios和安卓展示的点位样式还有有差别 源码附上 <template><view class"marke…...

Spring Boot在线考试系统:JavaWeb技术的应用案例

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

Linux在服务器多节点下面如何快速查找日志

背景&#xff1a;最近在查找一个核心服务的后台日志&#xff0c;发现竟然部署了十几个节点&#xff0c;而且没使用ELK来做日志处理&#xff0c;所以查找日志非常不方便&#xff0c;不可能一个服务节点一个服务地找&#xff0c;所以通过同事间互相沟通找到一个方法&#xff0c;通…...

模数转换ADC0804的应用

【实验目的】 学习如何用单片机控制ADC0804芯片进行数模转换&#xff0c;掌握数码管动态扫描显示的原理。 【实验现象】 拧动AD旁边的电位器&#xff0c;会在数码管的前三位显示0-255之间的数值。 【实验说明】 动态扫描&#xff1a;就六位数码管显示123456举例说明如下&#x…...

CBAM中关于碳关税抵销

碳关税是欧盟为应对气候变化、防止 “碳泄漏” 而推出的一种边境调节机制。该机制的目的就是拉平进口产品与欧盟产品的碳成本&#xff0c;迫使其他国家建立碳市场或征收碳税&#xff0c;提高碳价&#xff0c;以达到和欧盟相同的水平&#xff0c;同时也有助于欧盟实现其气候目标…...

2.5 windows xp,ReactOS系统快速系统调用的实现

windows xp&#xff0c;ReactOS系统快速系统调用的实现 windows xp&#xff0c;ReactOS系统快速系统调用的实现 文章目录 **windows xp&#xff0c;ReactOS系统快速系统调用的实现**快速系统调用进入R0我们看MSR寄存器中的内容到底是啥子快速系统调用返回PspLookupKernelUserE…...

网盘直链下载助手:一键解锁8大平台高速下载通道

网盘直链下载助手&#xff1a;一键解锁8大平台高速下载通道 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 /…...

【配网可靠性评估】含可再生能源的配电网可靠性评估方法Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f447; 关注我领取海量matlab电子书和数学建模资料&#x1f34a;个人信条&#xff1a;格物致知,完整Matl…...

R-HORIZON:探索长程推理边界,复旦 NLP美团 LongCat 联合提出

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

解决VirtualBox/VMware虚拟机在win10下运行ensp时AR启动卡死问题

未经授权&#xff0c;禁止转载&#xff01;1.环境准备与确认首先 &#xff0c;确认你的虚拟机是否是windows10&#xff0c;例如我的虚拟机操作系统如下&#xff1a;2.然后&#xff0c;确认你的环境是否正确&#xff0c;重点查看VirtualBox是否是"VirtualBox-5.2.44-139111…...

Lepton AI农业监测:作物生长分析服务构建实践

Lepton AI农业监测&#xff1a;作物生长分析服务构建实践 【免费下载链接】leptonai A Pythonic framework to simplify AI service building 项目地址: https://gitcode.com/gh_mirrors/le/leptonai Lepton AI是一个Pythonic框架&#xff0c;专为简化AI服务构建而设计&…...

OpenClaw+千问3.5-35B-A3B-FP8:24/7自动化内容审核方案

OpenClaw千问3.5-35B-A3B-FP8&#xff1a;24/7自动化内容审核方案 1. 为什么需要个人级内容审核方案 去年运营技术社区时&#xff0c;我每天要处理上百条用户生成内容。凌晨三点被举报消息吵醒的经历&#xff0c;让我开始寻找能替代人工初审的自动化方案。市面上的SaaS审核服…...

零基础玩转CentOS:快马AI生成新手友好型系统管理教程

作为一个Linux新手&#xff0c;第一次接触CentOS系统确实有点手足无措。记得我刚安装完CentOS 8最小化系统时&#xff0c;面对那个黑乎乎的终端界面&#xff0c;完全不知道从哪里开始配置。好在最近发现了InsCode(快马)平台&#xff0c;它生成的CentOS入门教程特别适合我这样的…...

DreamZero技术解析:当视频扩散模型成为机器人“物理大脑“

原文摘要翻译最先进的视觉-语言-动作&#xff08;VLA&#xff09;模型在语义泛化方面表现出色&#xff0c;但在新环境中难以泛化到未见过的物理动作。我们提出了 DreamZero&#xff0c;一种基于预训练视频扩散主干网络构建的世界动作模型&#xff08;WAM&#xff09;。与 VLA 不…...

Cadence xrun文件扩展名黑科技:用-vlog_ext参数管理混合语言验证环境

Cadence xrun文件扩展名管理实战&#xff1a;混合语言验证环境的高效配置技巧 在数字IC验证领域&#xff0c;多语言混合仿真已成为复杂SoC验证的常态。Verilog、SystemVerilog和VHDL文件往往混杂在同一个项目中&#xff0c;更棘手的是&#xff0c;不同团队可能对相同语言采用不…...

为什么你的经典游戏在Windows 10/11上无法运行?DDrawCompat完美解决方案

为什么你的经典游戏在Windows 10/11上无法运行&#xff1f;DDrawCompat完美解决方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_…...