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

2024.11.4 STM32点灯和简单的数据收发

1.发送函数

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

参数1: UART 处理结构体的指针,该结构体包含了 UART 的所有配置参数。

参数2:要发送的数据指针

参数3:要发送的数据长度(单位:字节)

参数4:超时时间 (单位ms,如果在该时间内没有完成,则直接执行下一条语句,并且返回HAL_timeout)

返回值:

  • HAL_OK: 操作成功。
  • HAL_ERROR: 发生错误

2.接收函数

HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

参数:

参数1: UART 处理结构体的指针,该结构体包含了 UART 的所有配置参数。

参数2:要接收数据的变量指针

参数3:要接收的数据长度(单位:字节)

参数4:超时时间 (单位ms,如果在该时间内没有完成,则直接执行下一条语句)

返回值:

  • HAL_OK: 操作成功。
  • HAL_ERROR: 发生错误

以上是HAL库进行数据收发的函数,不过一般使用printf和scanf。因为printf和scanf会调用fputc和fgetc,因此重写fputc和fgetc执行数据收发。在重写之后就可以直接使用printf和scanf函数进行数据的收发。

fgetc重写1:int fputc(int ch,FILE *f){HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,10);return ch;
}fputc重写2:int fputc(int ch,FILE *f){while(!(USART1->ISR&(1<<7)));USART1->TDR=ch;return ch;}fgetc的重写:int fgetc(FILE *f){uint8_t ch;while(!(USART1->ISR&(1<<5)));ch=USART1->RDR;return ch;
}

因为scanf会自动在字符串末尾加上\0(win为\r),因此相较于Hal原生函数,scanf不需要对其他进行关心。

1.当STM32接收到串口助手的命令后,控制马达震动,表示有数据接收

	scanf("%s",buffer);if(!strcmp(buffer,"motor")){HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,1);//			HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,1);}else{printf("not motor code");}

2.当STM32收到LED1_ON时,打开LED1收到LED1_OFF时,关闭LED1

scanf("%s",buffer);if(!strcmp(buffer,"LED1_ON")){HAL_GPIO_WritePin(GPIOC,GPIO_PIN_4,1);}else if(!strcmp(buffer,"LED1_OFF")){HAL_GPIO_WritePin(GPIOC,GPIO_PIN_4,0);}else{printf("not led1 code");}

3.当STM32收到LED3_ON时,打开LED3 收到LED3_OFF时,打开LED3

scanf("%s",buffer);if(!strcmp(buffer,"LED3_ON")){HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,1);}else if(!strcmp(buffer,"LED3_OFF")){HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,0);}else{printf("not led3 code");}


4.当STM32收到STATUS时:将LED1 LED3光电开关的状态,推送到串口助手中
 

	if(!strcmp("STATUS",buffer)){int a=HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_4);int b=HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13);printf("led1 status :%d",a);printf("led3 status :%d",b);}else{printf("not status code");}

相关文章:

2024.11.4 STM32点灯和简单的数据收发

1.发送函数 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); 参数1&#xff1a; UART 处理结构体的指针&#xff0c;该结构体包含了 UART 的所有配置参数。 参数2&#xff1a;要发送的数据指针 参数3&…...

Android Studio jcenter 停止服务,改用mavenCentral

随着jcenter在2021年2月28日停止服务&#xff0c;Android和Java开发者需寻找替代方案。推荐使用MavenCentral&#xff0c;可借助国内镜像加速。此外&#xff0c;jitpack.io也是一个选项&#xff0c;但对于大型项目&#xff0c;自建Nexus或MavenCentral更合适。迁移步骤包括更新…...

EasyPOI使用详解

EasyPOI 简介 easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 文档&#xff1a;http://easypoi.mydoc.io/#categor…...

【云原生开发】K8S多集群资源管理平台架构设计

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

基于SpringBoot的城镇住房保障系统开发

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

一文解秘Rust如何与Java互操作

本博客所有文章除特别声明外&#xff0c;均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 唯你 使用场景 JAVA 与 Rust 互操作让 Rust 可以背靠 Java 大生态来做更多事情&#xff0c;而 Java 也可以享受 Rust 语言特性的内存安全&#xff0c;所有权机制&#xff0c;无畏并发。…...

手机发展史介绍

手机&#xff0c;这个曾经在电影和科幻小说中出现的高科技产品&#xff0c;如今已经渗透进了我们生活的每个角落。从单纯的通讯工具到如今集成了通讯、娱乐、工作、社交等多种功能的智能终端&#xff0c;手机的发展史也是人类科技进步的缩影。本文将从手机的发展历程、技术革新…...

【ArcGISPro】单次将自己建立的工具箱添加至Arcpy中

新建工具箱 添加至Arcpy中 调用刚添加的工具箱...

docker镜像仓库常用命令

docker镜像仓库常用命令 docker logindocker logoutdocker pulldocker pushdocker searchdocker imagesdocker image inspectdocker tagdocker rmidocker image prunedocker savedocker loaddocker history docker login 语法: docker login [options] [server] 功能&#xff…...

springboot 传统应用程序,适配云原生改造

概述 2024年传统应用程序上云&#xff0c;改造方案 1、mysql 云环境高可用方案 2、redis 云环境高可用方案 3、nginx 云环境高可用方案 4、应用 云环境高可用方案1、mysql 云环境高可用方案 1.1 你先了解 1.1.1 你先了解“mysql高可用方案” 主从复制&#xff08;Master-S…...

D61【python 接口自动化学习】- python基础之数据库

day61 数据库定义 学习日期&#xff1a;20241107 学习目标&#xff1a;MySQL数据库-- 130&#xff1a;MySQL入门使用 学习笔记&#xff1a; 在命令提示符内先试用MySQL 使用图形化工具操作MySQL DBeaver安装 DBeaver连接MySQL 总结 MySQL安装成功后&#xff0c;可以使用命…...

数据库期末考试简答题

1&#xff0e;试述数据、数据库、数据库管理系统、数据库系统的概念。 答&#xff1a;&#xff08;1&#xff09;数据是数据库中存储的基本对象&#xff0c;是描述事物的符号记录。数据有多种表现形式&#xff0c;它们都可以经过数字化后存入计算机。数据的种类有数字、文字、…...

Java[面试题]-真实面试

1.什么是IOC和AOP&#xff1f;了解么&#xff1f; IOC&#xff08;控制反转&#xff09;和AOP&#xff08;面向切面编程&#xff09; 1. IOC&#xff08;控制反转&#xff09; 概念 IOC&#xff08;Inversion of Control&#xff09;是面向对象编程中的一个设计原则&#xf…...

HTML5新增多媒体支持

一、引言 在当今数字化时代&#xff0c;丰富的多媒体内容对于网页的吸引力和用户体验至关重要。HTML5 的出现为网页带来了强大的多媒体支持&#xff0c;尤其是在音频和视频方面&#xff0c;为开发者和用户带来了全新的可能性。 二、音频audio标签 2.1 定义与属性详解 <a…...

K8S群集调度二

一、污点(Taint) 和 容忍(Tolerations) 1.1、污点(Taint) 设置在node上是对pod的一种作用 节点的亲和性&#xff0c;是Pod的一种属性&#xff08;偏好或硬性要求&#xff09;&#xff0c;它使Pod被吸引到一类特定的节点 而Taint 则相反&#xff0c;它使节点能够排斥一类特…...

43.第二阶段x86游戏实战2-提取游戏里面的lua

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…...

debian系统安装qt的时候 显示xcb相关文件缺失

如果是安装之后的问题 我们可以选择使用ldd的命令查看当前依赖的so那些文件确实 ldd /home/yinsir/Qt/5.15.2/gcc_64/plugins/platforms/libqxcb.so 本人在进行打包的时候 出现则会个报错 ERROR: ldd outputLine: “libxcb-util.so.1 > not found” ERROR: for binary: “/…...

得物多模态大模型在重复商品识别上的应用和架构演进

重复商品治理介绍 根据得物的平台特性&#xff0c;同一个商品在平台上不能出现多个链接&#xff0c;原因是平台需要保证一品一链的特点&#xff0c;以保障商品的集中竞价&#xff0c;所以说一个商品在整个得物平台上只能有一个商详链接&#xff0c;因此我们需要对一品多链的情…...

基于 SSM(Spring + Spring MVC + MyBatis)框架构建电器网上订购系统

基于 SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架构建电器网上订购系统可以为用户提供一个方便快捷的购物平台。以下将详细介绍该系统的开发流程&#xff0c;包括需求分析、技术选型、数据库设计、项目结构搭建、主要功能实现以及前端页面设计。 需求分析 …...

应用插件化及其进程关系梳理

插件应用的AndroidManifest.xml <manifest xmlns:android"http://schemas.android.com/apk/res/android"coreApp"true"package"com.demo.phone"android:sharedUserId"android.uid.phone"><uses-sdk android:minSdkVersion&q…...

ChatGPT AI生成式引擎优化*(GEO)方案

ChatGPT AI生成式引擎优化*&#xff08;GEO&#xff09;方案&#xff1a; 技术支持&#xff1a;拓世网络技术开发工作室 1️⃣ 战略规划阶段 目标明确 内容类型 文本&#xff1a;文章、产品描述、文案、技术文档 图像&#xff1a;营销图片、社交媒体图、设计草图 视频/动画&…...

ChatGLM3-6B Streamlit应用案例:代码辅助、长文档摘要、闲聊三合一

ChatGLM3-6B Streamlit应用案例&#xff1a;代码辅助、长文档摘要、闲聊三合一 1. 项目简介&#xff1a;你的本地全能AI助手 想象一下&#xff0c;你正在写一段复杂的代码&#xff0c;卡在某个逻辑上&#xff1b;或者面对一份几十页的技术文档&#xff0c;需要快速提炼核心&a…...

Qwen3-14B向量数据库集成:Chroma/Milvus接入与混合检索配置

Qwen3-14B向量数据库集成&#xff1a;Chroma/Milvus接入与混合检索配置 1. 引言&#xff1a;为什么需要向量数据库集成 当你部署了强大的Qwen3-14B大模型后&#xff0c;很快会发现一个关键问题&#xff1a;如何让模型记住并快速检索大量知识&#xff1f;这就是向量数据库的价…...

PowerPaint-V1 Gradio场景应用:从家庭照片修复到工作素材处理

PowerPaint-V1 Gradio场景应用&#xff1a;从家庭照片修复到工作素材处理 1. 引言&#xff1a;图像修复的日常革命 周末整理老照片时&#xff0c;发现珍贵的全家福上有几处划痕&#xff1b;准备工作报告时&#xff0c;急需一张专业配图却找不到合适素材&#xff1b;电商运营需…...

学术论文利器:OpenClaw+Qwen3.5-9B自动生成LaTeX文档

学术论文利器&#xff1a;OpenClawQwen3.5-9B自动生成LaTeX文档 1. 为什么需要自动化论文写作工具 去年冬天&#xff0c;当我面对第五篇论文的修订时&#xff0c;突然意识到自己把80%的时间花在了重复劳动上&#xff1a;调整表格格式、重新绘制图表、校对参考文献编号。这种机…...

单片机通信协议详解:IIC、SPI、UART与CAN对比

1. 单片机通信协议概述在嵌入式系统开发中&#xff0c;单片机的通信能力直接影响着整个系统的架构设计和性能表现。作为一名有着十年嵌入式开发经验的工程师&#xff0c;我经常需要根据项目需求选择合适的通信协议。目前主流的单片机通信方式包括IIC、SPI、UART/USART、CAN等&a…...

TimesFM时间序列预测模型实战:从基础模型到高效部署的完整路径

TimesFM时间序列预测模型实战&#xff1a;从基础模型到高效部署的完整路径 【免费下载链接】timesfm TimesFM (Time Series Foundation Model) is a pretrained time-series foundation model developed by Google Research for time-series forecasting. 项目地址: https://…...

SEO_ 详解SEO优化中内容与外部链接的建设策略

SEO优化中内容与外部链接的建设策略 在当前互联网营销领域&#xff0c;SEO优化&#xff08;搜索引擎优化&#xff09;是提升网站流量和品牌知名度的关键手段。其中&#xff0c;内容与外部链接的建设策略是两大核心要素。本文将详解SEO优化中内容与外部链接的建设策略&#xff…...

镜像视界|大模型+空间智能:公安视频系统迈入“目标持续掌控时代”——融合多视角三角测量、动态三维重构与行为认知引擎的无感定位体系

&#x1f4d8; 镜像视界&#xff5c;大模型空间智能&#xff1a;公安视频系统迈入“目标持续掌控时代”——融合多视角三角测量、动态三维重构与行为认知引擎的无感定位体系一、时代转折&#xff1a;公安视频系统进入“大模型时代”近年来&#xff0c;以大模型为代表的新一代人…...

Git從入門到「入坑」:一個新手的環境配置與踩坑實錄

Git從入門到「入坑」&#xff1a;一個新手的環境配置與踩坑實錄 ——AtomGit春季徵稿開源入門實戰分享 導語&#xff1a;為什麼我要寫這篇文章&#xff1f; 三個月前&#xff0c;我連git clone和git pull的區別都說不清楚。每次看到Git報錯&#xff0c;我的第一反應不是讀錯誤信…...