BearPi Std 板从入门到放弃 - 后天篇(3)(ESP8266透传点灯)

简介

电脑搭建一个TCP Server, ESP8266 串口设置好透传模式, 再由TCP Server发送指令控制灯的亮灭;
开灯指令: led_on+回车 ; 关灯指令: led_off+回车
主芯片: STM32L431RCT6
LED : PC13 \ 推挽输出即可 \ 高电平点亮
串口: Usart1 / LPUART
ESP8266 : 型号ESP-12F

步骤

设置ESP8266 透传

参考 [ESP8266 TCP/串口透传](https://blog.csdn.net/halo_hsuh/article/details/135134634?spm=1001.2014.3001.5501)

STM32项目创建

参考 BearPi Std 板从入门到放弃 - 引气入体篇(1)(由零创建工程到点亮LED)

初始化与ESP8266的串口LPUART1

在这里插入图片描述
开启中断
在这里插入图片描述

添加用户代码

/*on :0 : OFF1 : ON
*/
void User_LED_Set(int on)
{HAL_GPIO_WritePin(USER_LED_GPIO_Port, USER_LED_Pin, on ? GPIO_PIN_SET : GPIO_PIN_RESET);
}void Command_Handle(const uint8_t *buf, int length)
{printf ("COMMAND HANDLE\r\n");if ( '\r' == buf[length-1] ){length -= 1;}if (0 == strncmp("led_on", (const char *)buf, length)){HAL_GPIO_WritePin(USER_LED_GPIO_Port, USER_LED_Pin, GPIO_PIN_SET);printf ("led_on!\r\n");}else if (0 == strncmp("led_off", (const char *)buf, length)){HAL_GPIO_WritePin(USER_LED_GPIO_Port, USER_LED_Pin, GPIO_PIN_RESET);printf ("led_off!\r\n");}
}void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if ( huart->Instance == LPUART1 ){if ( '\n' ==  Cmd_Buffer[Cmd_Index] ){Command_Handle(Cmd_Buffer, Cmd_Index);Cmd_Index = 0;}else{++Cmd_Index;}HAL_UART_Receive_IT(&hlpuart1, &Cmd_Buffer[Cmd_Index], 1);	}
}int fputc(int ch, FILE *f)
{uint8_t temp[1] = {ch};{HAL_UART_Transmit(&huart1, temp, 1, 2);}return HAL_OK;
}int main(void)
{
...
HAL_UART_Receive_IT(&hlpuart1, &Cmd_Buffer[Cmd_Index], 1); // 开启接收
while(1)
{HAL_Delay(1000); // 
}
...
}

代码

完整代码

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

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

相关文章

指针---你真的会使用指针吗?

指针作为C语言中的一个部分,可以说指针是C语言的核心,那么它的难度肯定是不言而喻的,总是能把人给绕得找不到方向。 今天我就好好的说一说指针这个东西。 1、何为指针? 指针是C语言中用来存放地址的一个变量类型。我们可以将指针看…

Uniapp + Vue3 + Pinia + Vant3 框架搭建

现在越来越多项目都偏向于Vue3开发&#xff0c;想着uniapp搭配Vue3试试效果怎么样&#xff0c;接下来就是详细操作步骤。 初始化Uniapp Vue3项目 App.vue setup语法 <script setup>import {onLaunch,onShow,onHide} from dcloudio/uni-apponLaunch(() > {console.l…

同源策略:保护你的网页免受恶意攻击的第一道防线(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

使用Flask逐步搭建Web应用程序

大家好&#xff0c;Flask是一个使用Python编写的轻量级Web应用框架。它被设计成简单、易于学习和使用的&#xff0c;同时具备足够的灵活性和扩展性&#xff0c;以满足各种规模的Web应用开发需求。本文我们将介绍一个使用Flask逐步搭建Web应用程序的简单入门示例。 1.安装Flask…

计算机存储术语: 扇区,磁盘块,页

扇区(sector) 硬盘的读写以扇区为基本单位。磁盘上的每个磁道被等分为若干个弧段&#xff0c;这些弧段称之为扇区。硬盘的物理读写以扇区为基本单位。通常情况下每个扇区的大小是 512 字节。linux 下可以使用 fdisk -l 了解扇区大小&#xff1a; $ sudo /sbin/fdisk -l Disk …

Vue3-24-组件-异步组件的介绍

什么是异步组件 个人理解 &#xff1a;异步组件 就是在用到这个组件的时候再进行加载&#xff0c;而不是 一上来就全部加载完成。即用即取的一个思想。异步组件中使用到的方法 &#xff1a; defineAsyncComponent () 方法 &#xff1a; 返回一个Promise 对象; 我们在开发过程中…

Unity中Shader缩放矩阵

文章目录 前言一、直接相乘缩放1、在属性面板定义一个四维变量&#xff0c;用xyz分别控制在xyz轴上的缩放2、在常量缓存区申明该变量3、在顶点着色器对其进行相乘&#xff0c;来缩放变换4、我们来看看效果 二、使用矩阵乘法代替直接相乘缩放的原理1、我们按如下格式得到缩放矩阵…

java实现回文数算法

判断一个数是否为回文数可以使用以下算法&#xff1a; 将数字转化为字符串&#xff1b;初始化左右两个指针&#xff0c;分别指向字符串的首尾&#xff1b;循环比较左右指针指向的字符&#xff0c;如果相等则继续比较&#xff0c;直到左右指针相遇或者发现不相等的字符为止&…

ES集群G1回收器,堆空间无法被回收问题

ES堆空间不足的问题&#xff0c;困扰了我有两年的时间。dump堆去分析&#xff0c;也未能分析出来&#xff0c;堆到底是被什么占用了。 我把堆空间给了31.9G&#xff0c;这是指针压缩生效的临界值&#xff0c;如果再大就指针压缩失效了。 痛苦的是&#xff0c;随着时间的增长。堆…

mysql复习笔记05(小滴课堂)

mysql的慢查询日志开启与问题定位 一张数据库数据很大的表。 查询一条数据&#xff0c;很快就查询出来了。 根据不同的条件&#xff0c;查到的数据相同&#xff0c;但是查询所花费的时间却是不同的。 使用命令查询慢查询日志是否开启&#xff0c;目前它是关闭着的。 开启日志。…

利用prometheus+grafana进行Linux主机监控

文章目录 一.架构说明与资源准备二.部署prometheus1.上传软件包2.解压软件包并移动到指定位置3.修改配置文件4.编写启动脚本5.启动prometheus服务 三.部署node-exporter1.上传和解压软件包2.设置systemctl启动3.启动服务 四.部署grafana1.安装和启动grafana2.设置prometheus数据…

Java研学-HTTP 协议

一 概述 1 概念和作用 概念&#xff1a;HTTP 是 HyperText Transfer Protocol (超文本传输协议)的简写&#xff0c;它是 TCP/IP 协议之上的一个应用层协议。简单理解就是 HTTP 协议底层是对 TCP/IP 协议的封装。   作用&#xff1a;用于规定浏览器和服务器之间数据传输的格式…

【源码解析】聊聊ReentrantReadWriteLock是如何实现的读写锁

为什么需要读写锁 在并发编程领域&#xff0c;有多线程进行提升整体性能&#xff0c;但是却引入了共享数据安全性问题。基本就是无锁编程下的单线程操作&#xff0c;有互斥同步锁操作&#xff0c;但是性能不高&#xff0c;并且同一时刻只有一个线程可以操作资源类。但是对于大…

[SWPUCTF 2021 新生赛]gift_F12

打开环境 题目有提示&#xff08;F12&#xff09;&#xff0c;那就查看一下源代码 直接滑到最后 看提示猜测&#xff0c;flag就在源代码里了 ctrlf查找flag 最后得到flag&#xff0c;改一下形式就可以了

网络技术基础与计算思维实验教程_2.4_跨交换机VLAN配置实验

实验内容 实验目的 实验原理 实验步骤 构建 在工作区放置交换机然后单击 选择config , 把交换机的默认名改为switch1 再放置两个交换机 再放置终端 放置三台与交换机1相连的终端 再放置三台与交换机3相连的终端 再放置两台与交换机2相连的终端 用直通线连接 然后用交叉线互联交…

java8流库之Stream.iterate

简介 java.util.stream.Stream 下共有两个 iterate iterate(T seed, final UnaryOperator<T> f)iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> f) 该方法产生一个无限流&#xff0c;它的元素包含seed&#xff0c;在seed上调用f产生的…

Matlab论文插图绘制模板第131期—函数等高线图

在之前的文章中&#xff0c;分享了Matlab函数折线图的绘制模板&#xff1a; 函数三维折线图&#xff1a; 函数网格曲面图&#xff1a; 函数曲面图&#xff1a; 进一步&#xff0c;再来分享一下函数等高线图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数…

【Week-P2】CNN彩色图片分类-CIFAR10数据集

文章目录 一、环境配置二、准备数据三、搭建网络结构四、开始训练五、查看训练结果六、总结3.1 ⭐ torch.nn.Conv2d()详解3.2 ⭐ torch.nn.Linear()详解3.3 ⭐torch.nn.MaxPool2d()详解3.4 ⭐ 关于卷积层、池化层的计算4.2.1 optimizer.zero_grad()说明4.2.2 loss.backward()说…

MyBatis Plus使用遇到的问题

如果想使用Mapper的xxxById()方法&#xff0c;实体类的主键上面必须加上TableId注解&#xff0c;如果不加&#xff0c;会报错 2023-12-21 22:48:33.526 WARN 11212 --- [ main] c.b.m.core.injector.DefaultSqlInjector : class com.example.mybatisplusdemo.dom…

ubuntu18.04 64 位安装笔记——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

进入VirtuakBox官网&#xff0c;网址链接&#xff1a;Oracle VM VirtualBoxhttps://www.virtualbox.org/ 网页连接&#xff1a;Ubuntu Virtual Machine Images for VirtualBox and VMwarehttps://www.osboxes.org/ubuntu/ 将下发的ds_db01.sql数据库文件放置mysql中 12、编写S…