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→文件名/考生文件夹 插入→分节符→文本框→输入文件→排版_居中对齐→间距/回车去掉文本框的边框→选中文本框→格式:形状轮廓…...
OFA-Image-Caption在AIGC内容创作中的应用:自动化生成图片社交媒体文案
OFA-Image-Caption在AIGC内容创作中的应用:自动化生成图片社交媒体文案 你有没有过这样的经历?手头攒了一堆产品图、活动照或者随手拍的美景,想发到社交媒体上,却对着屏幕半天憋不出一句像样的文案。要么写得干巴巴没人看&#x…...
【Linux第十四章】文件系统
前言 🚀在日常开发里,我们几乎每天都在和文件打交道:打开源码、读取日志、写入配置、删除临时文件。但从操作系统的视角看,磁盘上天然存在的并不是“文件”这种概念,底层真正能被访问的,是一块一块的存储单…...
AutoGLM-Phone-9B开箱即用:跟着这篇,快速部署你的移动端大模型
AutoGLM-Phone-9B开箱即用:跟着这篇,快速部署你的移动端大模型 1. AutoGLM-Phone-9B简介 1.1 什么是AutoGLM-Phone-9B AutoGLM-Phone-9B是一款专为移动端优化的多模态大语言模型,它能够同时处理视觉、语音和文本三种输入方式。这个模型最大…...
Phi-3-mini-128k-instruct部署教程:基于vLLM的GPU显存优化方案(A10/A100实测)
Phi-3-mini-128k-instruct部署教程:基于vLLM的GPU显存优化方案(A10/A100实测) 1. 开篇:为什么选择Phi-3-mini-128k-instruct? 如果你正在寻找一个既轻量又强大的文本生成模型,那么Phi-3-mini-128k-instru…...
企业级RAG系统构建:BGE-Reranker-v2-m3镜像部署最佳实践
企业级RAG系统构建:BGE-Reranker-v2-m3镜像部署最佳实践 1. 引言:为什么你的RAG系统总是“答非所问”? 如果你正在构建企业级的RAG(检索增强生成)系统,一定遇到过这样的尴尬场景:用户问“如何…...
Stable Yogi Leather-Dress-Collection实战:SpringBoot微服务集成与API开发
Stable Yogi Leather-Dress-Collection实战:SpringBoot微服务集成与API开发 最近在帮一个做时尚电商的朋友做技术方案,他们想在自己的商品详情页里,根据用户上传的真人照片,实时生成虚拟试穿效果。核心需求很明确:需要…...
5分钟搞定专业级黑苹果配置:OpCore Simplify智能工具让复杂EFI构建化繁为简
5分钟搞定专业级黑苹果配置:OpCore Simplify智能工具让复杂EFI构建化繁为简 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 开篇痛点直击&…...
S2-Pro创意写作效果展示:多种文体与风格仿写
S2-Pro创意写作效果展示:多种文体与风格仿写 1. 开篇:当AI遇见创意写作 最近试用S2-Pro进行创意写作,结果让我这个老文案都感到惊艳。这款模型不仅能流畅生成各类文体,还能精准模仿名家风格,就像一位全能的文字魔术师…...
实时内存监控→自动降级→优雅回收:构建Python服务的自愈式内存管理闭环(附开源工具链)
第一章:Python智能体内存管理策略教程 Python智能体(如基于LangChain、LlamaIndex构建的Agent)在长时间运行、多轮对话或处理大上下文时,常面临内存泄漏、缓存冗余与引用滞留等问题。其内存管理不能仅依赖CPython的自动引用计数与…...
避坑指南:用Python调用腾讯混元大模型API时,你可能会遇到的5个常见错误及解决方法
避坑指南:用Python调用腾讯混元大模型API时,你可能会遇到的5个常见错误及解决方法 调试API接口就像在迷宫中寻找出口——每个转角都可能遇到意想不到的障碍。作为使用腾讯混元大模型的开发者,我在过去三个月里处理了超过200次API调用异常&…...
