STM32-串口-UART-Asynchronous
一,发送数据
#include "stdio.h"
uint8_t hello[]="Hello,blocking\r\n";
HAL_UART_Transmit(&huart1,hello,sizeof(hello),500);
二,MicroLIB-printf(" hello\r\n")
#include "stdio.h"
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF); return ch; }

注意:每次GENERATE CODE确定勾选MicroLIB,波特率==115200 。
三,中断接收不定长数据
1.usart.c下添加
你只需更改huart->Instance为你使用串口号的,注意发送以回车结束。
uint8_t g_usart_rx_buf[USART_REC_LEN];/* 接收缓冲, 最大USART_REC_LEN个字节. */
uint16_t g_usart_rx_sta = 0;/* 接收状态 bit15,接收完成标志 bit14,接收到0x0d bit13~0,接收到的有效字节数目 */
uint8_t g_rx_buffer[RXBUFFERSIZE]; /* HAL库使用的串口接收缓冲 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if (huart->Instance == USART1) /* 如果是串口1 */{if ((g_usart_rx_sta & 0x8000) == 0) /* 接收未完成 */{if (g_usart_rx_sta & 0x4000) /* 接收到了0x0d(即回车键) */{if (g_rx_buffer[0] != 0x0a) /* 接收到的不是0x0a(即不是换行键) */{g_usart_rx_sta = 0; /* 接收错误,重新开始 */}else /* 接收到的是0x0a(即换行键) */{g_usart_rx_sta |= 0x8000; /* 接收完成了 */}}else /* 还没收到0X0d(即回车键) */{if (g_rx_buffer[0] == 0x0d)g_usart_rx_sta |= 0x4000;else{g_usart_rx_buf[g_usart_rx_sta & 0X3FFF] = g_rx_buffer[0];g_usart_rx_sta++;if (g_usart_rx_sta > (USART_REC_LEN - 1)){g_usart_rx_sta = 0; /* 接收数据错误,重新开始接收 */}}}}HAL_UART_Receive_IT(huart, (uint8_t *)g_rx_buffer, RXBUFFERSIZE);}
}
2.usart.h下添加
#define USART_REC_LEN 200 /* 定义最大接收字节数 200 */
#define RXBUFFERSIZE 1 /* 缓存大小 */
extern uint8_t g_usart_rx_buf[USART_REC_LEN]; /* 接收缓冲,最大USART_REC_LEN个字节.末字节为换行符 */
extern uint16_t g_usart_rx_sta; /* 接收状态标记 */
extern uint8_t g_rx_buffer[RXBUFFERSIZE]; /* HAL库USART接收Buffer */
3.main.c下开启接收中断
HAL_UART_Receive_IT(&huart1, (uint8_t *)g_rx_buffer, RXBUFFERSIZE);
4.验证
uint8_t len;uint16_t times = 0;while (1){if (g_usart_rx_sta & 0x8000) /* 接收到了数据? */{len = g_usart_rx_sta & 0x3fff; /* 得到此次接收到的数据长度 */printf("\r\n您发送的消息为:\r\n");HAL_UART_Transmit(&huart1,(uint8_t*)g_usart_rx_buf, len, 1000); /* 发送接收到的数据 */while(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_TC) != SET); /* 等待发送结束 */printf("\r\n\r\n"); /* 插入换行 */g_usart_rx_sta = 0;}else{times++;if (times % 200 == 0) printf("请输入数据,以回车键结束\r\n");HAL_Delay(10);}/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}相关文章:
STM32-串口-UART-Asynchronous
一,发送数据 #include "stdio.h" uint8_t hello[]"Hello,blocking\r\n"; HAL_UART_Transmit(&huart1,hello,sizeof(hello),500); 二,MicroLIB-printf(" hello\r\n") #include "stdio.h" #ifdef __GNUC…...
Nginx三种不同类型的虚拟主机(基于域名、IP 和端口)
🏡作者主页:点击! Nginx-从零开始的服务器之旅专栏:点击! 🐧Linux高级管理防护和群集专栏:点击! ⏰️创作时间:2025年1月15日13点14分 目录 1. 基于域名的虚拟主机 …...
Shell控监Kafka积压
1、获取Kafka消息堆积情况 vi check-kafka-lag.sh #!/bin/bashTOPIC"total_random" GROUP_ID"etl-dw" BOOTSTRAP_SERVER"node-01:9092,node-02:9092,node-03:9092"# 检查第一个参数是否为数字 if ! [[ $1 ~ ^[0-9]$ ]]; thenecho &…...
element-ui textarea备注 textarea 多行输入框
发现用这个组件,为了给用户更好的体验,要加下属性 1. 通过设置 autosize 属性可以使得文本域的高度能够根据文本内容自动进行调整,并且 autosize 还可以设定为一个对象,指定最小行数和最大行数。:autosize"{ minRows: 3, ma…...
Transformer创新模型!Transformer+BO-SVR多变量回归预测,添加气泡图、散点密度图(Matlab)
Transformer创新模型!TransformerBO-SVR多变量回归预测,添加气泡图、散点密度图(Matlab) 目录 Transformer创新模型!TransformerBO-SVR多变量回归预测,添加气泡图、散点密度图(Matlab࿰…...
大疆机场及无人机上云
最近基于大疆上云api进行二次开发,后面将按照开发步骤对其进行说明!...
用Cursor生成一个企业官网前端页面(生成腾讯、阿里官网静态页面)
用Cursor生成一个企业官网前端页面 第一版: <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…...
Java 数组排序
目录 1.Java冒泡排序(Bubble Sort) 1.冒泡排序 2.冒泡排序的算法原理 3.冒泡排序的复杂度和性能 4.形成代码 2.Java快速排序(Quick Sort) 3.Java归并排序(Merge Sort) 4.Java选择排序(S…...
LeetCode:78.子集
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:78.子集 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集…...
【经济学通识——国债】
国债 政府的支出一般大于收入,会有赤字 于是会向全社会去借钱。美国债务上限,象征性的(一直上调)全球政府债务都在上升。 亚当斯密觉得市场竞争最有效率 市场自由竞争会不可避免的出现萧条。于是,凯恩斯提出政府调节…...
联合体(Union)
联合体(Union)简介 联合体(union)是 C 和 C 编程语言中的一种数据结构,和结构体(struct)类似,但有一些重要的区别。 定义 联合体中的所有成员共享同一段内存,也就是说…...
Kibana:ES|QL 编辑器简介
作者:来自 Elastic drewdaemon ES|QL 很重要 💪 正如你可能已经听说的那样,ES|QL 是 Elastic 的新查询语言。我们对 ES|QL 寄予厚望。它已经很出色了,但随着时间的推移,它将成为与 Elasticsearch 中的数据交互的最强大…...
【工具】curl工具
curl 官网: https://curl.se/ github: https://github.com/curl?languagec curl 命令 所有参数介绍在线文档 简单使用教程 邮件发送命令 注: 支持SMTP(或者POP3)协议,curl的版本必须高于7.20(含&…...
idea中远程调试中配置的参数说明
Ⅰ 远程调试中配置的端口号与服务本身端口号区别 一、远程调试中配置端口号的作用 在 IDEA 中进行远程调试时配置的端口号主要用于建立开发工具(如 IDEA)和远程服务之间的调试连接。当你启动远程调试时,IDEA 会监听这个配置的端口号…...
JavaWeb 前端基础 html + CSS 快速入门 | 018
今日推荐语 指望别人的救赎,势必走向毁灭——波伏娃 日期 学习内容 打卡编号2025年01月17日JavaWeb 前端基础 html CSS018 前言 哈喽,我是菜鸟阿康。 今天 正式进入JavaWeb 的学习,简单学习 html CSS 这2各前端基础部分&am…...
Debian 设定 tomcat 定时重启
目录 背景 过程记录 1、编辑sh文件,完成重启功能 2、设置sh的可执行权限 编辑 3、设置定时任务 背景 在Debian 12系统中,原本部署了两个tomcat,结果总是遇到CPU飙升到影响应用正常使用的程度,找了很久原因还是没有找到。 …...
【QT】: 初识 QWidget 控件 | QWidget 核心属性(API) | qrc 文件
🔥 目录 1. 控件概述 控件体系的发展阶段 2. QWidget 核心属性 2.1 核心属性概览2.2 用件可用(Enabled) 2.3 坐标系(Geometry) **实例 1: 控制按钮的位置**实例 2: 表白 程序 2.4 窗口标题(windowTiltle&a…...
下载文件,浏览器阻止不安全下载
背景: 在项目开发中,遇到需要下载文件的情况,文件类型可能是图片、excell表、pdf、zip等文件类型,但浏览器会阻止不安全的下载链接。 效果展示: 下载文件的两种方式: 一、根据接口的相对url,拼…...
基于javaweb的SpringBoot景区旅游管理系统设计和实现(源码+文档+部署讲解)
个人名片 🔥 源码获取 | 毕设定制| 商务合作:《个人名片》 ⛺️心若有所向往,何惧道阻且长 文章目录 个人名片运行环境技术栈适用功能说明使用说明 运行环境 Java≥8、MySQL≥5.7 1.运行环境:最好是java jdk 1.8,我们在这个平台…...
【17】Word:林楚楠-供应链❗
目录 题目 NO1.2 NO3 NO4 NO5 NO6 NO7 NO89 题目 NO1.2 另存为:文件→另存为→文档→文件名/考生文件夹F12/FnF12→文件名/考生文件夹 插入→分节符→文本框→输入文件→排版_居中对齐→间距/回车去掉文本框的边框→选中文本框→格式:形状轮廓…...
避开这些坑!Anthropic Computer Use在Mac上的安全使用指南(含Streamlit界面优化技巧)
避开这些坑!Anthropic Computer Use在Mac上的安全使用指南(含Streamlit界面优化技巧) 在Mac上探索AI工具的边界时,Anthropic Computer Use无疑是一把双刃剑。它既能让你通过自然语言指令操控整个系统,也可能因权限过高…...
手把手教你用Docker快速搭建CVE-2025-55182漏洞复现环境(附POC验证)
基于Docker的CVE-2025-55182漏洞靶场构建与安全研究实践 在当今快速迭代的前端技术生态中,React Server Components(RSC)作为Next.js框架的核心特性,正在重塑服务端渲染的实现方式。然而,2025年曝光的CVE-2025-55182漏…...
FLUX.1-dev-fp8-dit开发:PID控制算法可视化工具
FLUX.1-dev-fp8-dit开发:PID控制算法可视化工具 做自动化控制的朋友,估计没少跟PID算法打交道。调参调到头秃,对着波形图猜哪个参数不对,这种经历大家都有。传统的调试方法,要么在真实设备上反复试错,成本…...
从4G到Wi-Fi:一文拆解VoLTE、ViLTE与VoWiFi的核心差异与切换实战(附配置要点)
从4G到Wi-Fi:VoLTE、ViLTE与VoWiFi技术全景解析与实战指南 在移动通信技术快速迭代的今天,高清语音和视频通话已成为用户体验的核心指标。VoLTE、ViLTE和VoWiFi作为三种主流的IMS(IP多媒体子系统)通信技术,正在重塑现代…...
Java突变测试终极指南:Pitest如何提升你的代码质量
Java突变测试终极指南:Pitest如何提升你的代码质量 【免费下载链接】pitest State of the art mutation testing system for the JVM 项目地址: https://gitcode.com/gh_mirrors/pi/pitest 突变测试是Java开发中革命性的质量保障技术,而Pitest&am…...
Z-Image-Turbo镜像效果展示:孙珍妮LoRA在不同画幅(1:1/4:3/9:16)表现
Z-Image-Turbo镜像效果展示:孙珍妮LoRA在不同画幅(1:1/4:3/9:16)表现 1. 引言:当AI遇见明星肖像生成 你是否曾经想过,用AI技术生成自己喜欢的明星肖像?今天我们要展示的Z-Image-Turbo镜像,正是…...
Qwen-Image-Layered场景实战:用AI图层技术为你的产品图换背景
Qwen-Image-Layered场景实战:用AI图层技术为你的产品图换背景 1. 引言 1.1 电商设计的痛点 在电商运营中,产品主图的质量直接影响转化率。传统换背景流程需要设计师手动抠图、调整边缘、匹配光影,一个产品图往往需要30分钟以上的处理时间。…...
AIVideo GPU算力适配指南:低显存(8G)模式启用、缓存策略与批处理优化
AIVideo GPU算力适配指南:低显存(8G)模式启用、缓存策略与批处理优化 1. 引言:当AI视频创作遇上“显存焦虑” 如果你尝试过用AI生成视频,大概率遇到过这样的场景:兴致勃勃地输入一个创意主题,…...
快速部署Qwen3-TTS-Tokenizer:开箱即用的高保真音频编解码器
快速部署Qwen3-TTS-Tokenizer:开箱即用的高保真音频编解码器 1. 为什么选择Qwen3-TTS-Tokenizer-12Hz? 1.1 音频处理的三大痛点 在语音AI应用中,我们经常面临以下挑战: 存储压力:原始WAV文件体积庞大,1…...
开箱即用!mPLUG-Owl3-2B镜像快速部署,纯本地保护隐私的AI对话工具
开箱即用!mPLUG-Owl3-2B镜像快速部署,纯本地保护隐私的AI对话工具 1. 为什么选择这个工具:隐私与效率的完美平衡 在当今AI应用遍地开花的时代,找到一个既保护隐私又易于使用的多模态工具并不容易。mPLUG-Owl3-2B镜像正是为解决这…...
