STM32作业实现(二)串口控制led

目录

STM32作业设计
STM32作业实现(一)串口通信
STM32作业实现(二)串口控制led
STM32作业实现(三)串口控制有源蜂鸣器
STM32作业实现(四)光敏传感器
STM32作业实现(五)温湿度传感器dht11
STM32作业实现(六)闪存保存数据
STM32作业实现(七)OLED显示数据
STM32作业实现(八)触摸按键TPAD
STM32作业实现(九)驱动舵机
源码位置

开启led引脚

在这里插入图片描述
在这里插入图片描述
完成uart控制led开关功能
main.c

/* USER CODE BEGIN PV */
uint8_t uart_data = 0; // 处理不定长参数
char uart_buf[MAXSIZE] = ""; // 保存不定长命令
uint16_t uart_flag = 0; // 高位 字节用做标志位 低位 字节记录数组使用空间
/* USER CODE END PV *//* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart1, &uart_data, 1); // 处理不定长数据
/* USER CODE END 2 *//* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if((0x8000 & uart_flag) == 0) // 未收到\n结束{if(0x4000 & uart_flag) // 如果标志位当前是\r{// 判断本次字符是不是\rif(uart_data == '\n'){uart_flag |= 0x8000; // 如果收到\n更新标志位}else{uart_flag = 0; // \r后不是\n结束符不合法,重置数据}}else{if(uart_data == '\r') // 如果收到了\r更新标志位{uart_flag |= 0x4000;}else{// 正常数据存储到字符数组中uart_buf[uart_flag & 0x0fff] = uart_data;uart_flag++; // 下标偏移}}}if(0x8000 & uart_flag) // 收到完整的指令后{// 回显指令HAL_UART_Transmit(&huart1, (uint8_t*)uart_buf, uart_flag & 0x0fff, 1000);if(strncmp(uart_buf, "led:on", 6) == 0){HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_RESET);}else if(strncmp(uart_buf, "led:off", 7) == 0){HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_SET);}uart_flag = 0; //处理完命令清空数据memset(uart_buf, 0 , sizeof(uart_buf));}HAL_UART_Receive_IT(&huart1, &uart_data, 1); // 重新开启中断接收
}
/* USER CODE END 4 */

使用 UartAssist 工具发送与接收串口信息

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/20760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用python画一艘“福建舰”

import turtle # 设置画布和画笔 screen turtle.Screen() screen.bgcolor("white") pen turtle.Turtle() pen.speed(10) pen.color("blue") pen.penup() # 航母主体(简化为一个矩形) pen.goto(-200, 0) pen.pen…

路由和交换网络技术有哪些内容?

1. 路由器和交换机的基本概念:了解路由器和交换机的定义、功能和区别,以及它们在网络中的重要作用。 2. 路由协议:掌握常见的路由协议,如静态路由、动态路由和默认路由,以及它们的工作原理和使用场景。 3. VLAN和IP地址…

深入理解Java中的List集合:解析实例、优化技巧与最佳实践

一:List 集合的基础 1.1 什么是 List 集合? List 集合是 Java 集合框架中的一种有序、可重复的数据结构,它继承自Collection 接口,允许存储多个元素。 与数组不同,List 集合的大小是动态可变的,可以根据…

通过指针变量访问整型变量

有两个与指针变量有关的运算符: (1)&:取地址运算符。 (2)*:指针运算符(或称间接访问运算符)。 例如:&a为变量a的地址,*p为指针变量p所指向的存储单元。 编写程序: 运行结果…

【面试经典150题】移除元素

目录 一.移除元素 一.移除元素 这题的思路非常清晰&#xff0c;可以使用迭代器遍历找到需要删除的元素使用erase删除即可&#xff1a; #include<iostream> #include<vector>using namespace std;class Solution { public:int removeElement(vector<int>&…

设计模式(六)结构型模式---桥接模式

文章目录 桥接模式简介结构优点UML图具体实现UML图代码实现 桥接模式简介 桥接模式是一种将抽象与实现分离&#xff0c;使它们独立变化。然后利用组合关系来代替继承关系&#xff0c;大大的降低了抽象和实现的耦合度的设计模式。实际使用&#xff1a; JDBC源码分析&#xff0c…

C语言习题~day26

1.以下关于枚举的说法&#xff0c;哪个是正确的&#xff1f; A.枚举类型可以具有浮点数作为枚举值。 B.枚举类型在内存中存储为整数。 C.枚举类型可以包含字符串作为枚举值。 D.枚举类型不能作为函数的参数传递。 B 2.下面代码的结果是&#xff1a;&#xff08; &#xff0…

Kotlin 继承和实现

文章目录 前言继承&#xff08;extend&#xff09;实现&#xff08;implement&#xff09;继承与实现 前言 在 Kotlin 中&#xff0c;继承和实现都是在类名后使用冒号:&#xff0c;后边加上其他类或接口的名称来表示&#xff0c;二者之间写法没有太大区别&#xff08;类需要加…

Xcode下载安装

1.Xcode可用版本判断&#xff1a; 2.Xcode下载安装&#xff1a; 方案1:AppStore 下载更新 若方案1失败则 方案2:指定版本Xcode包下载解压安装 苹果下载 3.Xcode命令行工具插件安装 xcode-select --install 备注&#xff1a; xcode_x.x.x.xip(压缩包存在时效性(使用前24h/…

Mac专用投屏工具:AirServer 7 for Mac 激活版下载

AirServer 7 是一款在 Windows 和 macOS 平台上运行的强大的屏幕镜像和屏幕录制软件。它能够将 iOS 设备、Mac 以及其他 AirPlay、Google Cast 和 Miracast 兼容设备的屏幕镜像到电脑上&#xff0c;并支持高质量的录制功能。总的来说&#xff0c;AirServer 7 是一款功能全面的屏…

Mybatis编写SQL

文章目录 一、用注解编写1.1 增普通增加获取自增ID 1.2 删和改1.3 查单表查询多表查询 二、用xml编写2.1 使用xml的流程2.2 增普通增加获取自增ID 2.3 删 和 改2.4 查 三、#{} 和 ${}3.1 #{} 、${}3.1 预编译 SQL 、即时编译SQL 两种写法是可以同时存在的 一、用注解编写 1.1 …

QuillEditor+vue3 本身不支持行高的配置,那么如何配置行高?

通过查阅官方文档和众多资料发现&#xff0c;在QuillEditor的使用中&#xff0c;行高的配置并不像加粗、斜体等样式仅需配置关键词即可&#xff0c;那么QuillEditor的行高如何配置呢&#xff1f; 首先我们仍然要在富文本的配置的modules中写入行高的配置项 const myOptions …

linux bind函数

bind函数的目的是让把客户端对应的端口(port)地址和ip地址绑定到客户端 [参考](Linux之bind 函数&#xff08;详细篇&#xff09;_linux bind函数-CSDN博客)

Text1作业

Text1作业 Text1作业 题量: 16 满分: 100.0 一. 单选题&#xff08;共5题&#xff09; 1【单选题】A______ is a functional unit that interprets and carries out instructions.&#xff08;5.0分&#xff09; A memoryB processorC storageD network 2【单选题】A____…

mediasoup基础概览

提示&#xff1a;本文为之前mediasoup基础介绍的优化 mediasoup基础概览 架构&#xff1a;2.特性&#xff1a;优点缺点 3.mediasoup常见类介绍js部分c 4.mediasoup类图5.业务类图 Mediasoup 是一个构建在现代 Web 技术之上的实时通信&#xff08;RTC&#xff09;解决方案&#…

c语言多进程编程实例:深度探索与实用技巧

c语言多进程编程实例&#xff1a;深度探索与实用技巧 在C语言编程中&#xff0c;多进程编程是实现并发执行和资源共享的重要手段。本文将通过四个关键方面、五个核心要点、六个进阶技巧以及七个实践建议&#xff0c;带领读者深入理解C语言多进程编程的精髓。 四个方面&#x…

快速排序详讲(两种方法)

目录 原理 实现方式 正常实现 理由 先从右到左&#xff0c;在从左到右 先从左到右&#xff0c;先从右到左 挖坑法 效率 优化 测试 代码 原理 快速排序是将最左侧的数字当作关键数字&#xff0c;将关键数字放在对应位置&#xff0c;且关键数字左侧均大于它&#xff…

TRDB是啥

传统关系型数据库 TRDB:“Traditional Relational Database”,即“传统关系型数据库”。 关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。

模拟集成电路(6)----单级放大器(共源共栅级 Cascode Stage)

模拟集成电路(6)----单级放大器&#xff08;共源共栅级 Cascode Stage&#xff09; 大信号分析 对M1 V x ≥ V i n − V T H 1 V x V B − V G S 2 V B ≥ V i n − V T H 1 V G S 2 V_{x}\geq V_{in}-V_{TH1}\quad V_{x}V_{B}-V_{GS2}\\V_{B}\geq V_{in}-V_{TH1}V_{GS2} Vx…

每日一题《leetcode-- LCR 025.两数相加||》

https://leetcode.cn/problems/lMSNwu/ 分别把给定的两个链表翻转&#xff0c;然后从头开始相加。 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ //反转链表 struct ListNode* reverselist(struct ListNode*h…