stm32知识记录

文章目录

  • 单片机发送AT指令给ESP8266
  • 接收手机app数据的结构体
  • C语言的枚举类
    • 枚举类的应用
  • 设置水泵开启关闭代码分析
  • DS18B20的端口

单片机发送AT指令给ESP8266

以下是一个简单的示例,演示了如何使用AT指令从单片机发送数据给ESP8266模块,并通过Wi-Fi发送到远程服务器:

假设您的单片机使用UART与ESP8266通信,下面是一个示例代码:

#include <SoftwareSerial.h>SoftwareSerial espSerial(2, 3); // RX, TXvoid setup() {Serial.begin(9600); // 串口监视器espSerial.begin(115200); // ESP8266串口通信
}void loop() {// 从传感器中读取数据int sensorData = analogRead(A0);// 将数据转换为字符串String dataToSend = String(sensorData);// 发送AT指令给ESP8266模块espSerial.println("AT+CIPSTART=\"TCP\",\"your_server_ip\",your_server_port");delay(1000);espSerial.println("AT+CIPSEND=" + String(dataToSend.length() + 2));delay(500);espSerial.println(dataToSend);delay(5000); // 延时等待数据发送完成// 关闭TCP连接espSerial.println("AT+CIPCLOSE");delay(1000);delay(5000); // 每隔一段时间进行一次数据发送
}

在这个示例中,单片机通过软串口(SoftwareSerial)与ESP8266模块通信。它首先从传感器中读取数据,然后将数据转换为字符串并发送给ESP8266模块。单片机通过发送AT指令来控制ESP8266模块的行为,包括建立TCP连接、发送数据以及关闭连接。

请注意,您需要根据您的实际情况修改代码中的IP地址和端口号,并确保ESP8266模块已正确配置以连接到您的Wi-Fi网络。此外,由于示例代码中使用了延时函数,实际应用中可能需要根据需要进行更复杂的时间控制和错误处理。

接收手机app数据的结构体

typedef struct app
{u8 wifiSta;  // WiFi连接状态u8 waterSta; // // 1.水泵开启或关闭float temp;			//温度u8 turbidity;       // 浑浊度float ph;              // PH值u8 tds; // tds}appData;

C语言的枚举类

枚举类的隐式的定义

enum DAY
{MON,          //默认0TUE,			//默认1WED,			//默认2THU,			//默认3FRI,  		//默认4SAT,			//默认5SUN			//默认6
};

1.在c语言中,枚举类中的是枚举成员,默认枚举成员默认是整数类型。
2.隐式定义时,第一个枚举成员的默认值为0,后续成员值依次递加1。
3.可以自定义枚举类型的值,从而自定义某个范围内的整数。
4.枚举型是预处理指令#define的替代。

枚举类的显式的定义

enum DAY
{MON = 1,          //显式指定值为1TUE = 5,			//显式指定值为5WED = 19,			//THU = 27,			//FRI = 121,  		//SAT = 123,		//SUN = 345			//
};

枚举类的应用

mygpio.h文件

typedef enum GPIONUM
{BEEP,   //蜂鸣器默认为0PUMP,	//水泵默认为1GPIOMAX, //GPIOMAX默认为2
} GPIONUM;  typedef struct GPIOCOFIG
{GPIO_TypeDef *GPIOx;uint16_t GPIO_Pin;uint32_t RCC_APB2Periph;GPIOMode_TypeDef ioMode;
} GPIOCOFIG;

设置水泵开启关闭代码分析

// 从app获取水泵数据0或1,然后设置水泵状态if (g_appdata.waterSta == 1){ggpio.gpio_set(PUMP, 1);}else{ggpio.gpio_set(PUMP, 0);}

ggpio.gpio_set(PUMP, 1);这里对水泵进行了设置 ,实际是ggpio.gpio_set(1, 1);
->GPIO_SetBits(gpioconf[1].GPIOx, gpioconf[1].GPIO_Pin);
->GPIO_SetBits(GPIOB, GPIO_Pin_10); 可以看出水泵的引脚是B10,那蜂鸣器的引脚是A4

mygpio.c文件如下

#include "stm32f10x.h"
#include "mygpio.h"
#include "sys.h"
#include "delay.h"
#include "stdio.h"
#include "string.h"
#include "hmi_common.h"
#include "gizwits_protocol.h"static void init(void);
static void gpio_scan(void);
static void gpio_set(GPIONUM gpiox, uint8_t levelid);//定义了一个GPIOCOFIG 数组,数组名为gpioconf,GPIOMAX为2
static  GPIOCOFIG gpioconf[GPIOMAX] = {// 管脚组	管脚号	管脚组时钟       IOMODE{GPIOA, GPIO_Pin_4,  RCC_APB2Periph_GPIOA, GPIO_Mode_Out_PP},{GPIOB, GPIO_Pin_10,  RCC_APB2Periph_GPIOB, GPIO_Mode_Out_PP},
};GPIO ggpio = {.gpio_init = init,.gpio_scan = gpio_scan,.gpio_set = gpio_set,
};uint8_t g_gpio_statu[GPIOMAX];// 按键初始化函数
static void init(void) // IO初始化
{GPIO_InitTypeDef GPIO_InitStructure;uint8_t i = 0;for (i = 0; i < GPIOMAX; i++){memset(&GPIO_InitStructure, 0, sizeof(GPIO_InitTypeDef));RCC_APB2PeriphClockCmd(gpioconf[i].RCC_APB2Periph, ENABLE);GPIO_InitStructure.GPIO_Pin = gpioconf[i].GPIO_Pin;GPIO_InitStructure.GPIO_Mode = gpioconf[i].ioMode;	  // 浮空输入GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // IO口速度为50MHzGPIO_Init(gpioconf[i].GPIOx, &GPIO_InitStructure); // 根据设定参数初始化}ggpio.gpio_set(BEEP, 1);ggpio.gpio_set(PUMP, 0);
}static void gpio_scan(void)
{int i = 0;for (i = 0; i < GPIOMAX; i++){g_gpio_statu[i] = GPIO_ReadInputDataBit(gpioconf[i].GPIOx, gpioconf[i].GPIO_Pin);}}static void gpio_set(GPIONUM gpiox, uint8_t level)
{if (level == 1){GPIO_SetBits(gpioconf[gpiox].GPIOx, gpioconf[gpiox].GPIO_Pin);}else{GPIO_ResetBits(gpioconf[gpiox].GPIOx, gpioconf[gpiox].GPIO_Pin);}
}

DS18B20的端口

dsl8b20的端口PA0

u8 DS18B20_Check(void) 	   
{   u8 retry=0;DS18B20_IO_IN();//SET PA0 INPUT	 while (DS18B20_DQ_IN&&retry<200){retry++;delay_us(1);};	 if(retry>=200)return 1;else retry=0;while (!DS18B20_DQ_IN&&retry<240){retry++;delay_us(1);};if(retry>=240)return 1;	    return 0;
}

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

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

相关文章

车载以太网解决方案

车载以太网对现代汽车行业具有非常高的价值&#xff0c;随着汽车技术的不断发展&#xff0c;车载电子组件和传感器的数量与复杂度都在持续增加。为了满足这些复杂系统的需求&#xff0c;车载以太网作为一种高速数据交换介质&#xff0c;发挥着至关重要的作用。 汇迪能提供的车载…

数据的质量控制软件----fastQC

一、前言 FastQC的基本介绍: FastQC是一款基于Java的软件&#xff0c;它可以快速地对测序数据进行质量评估&#xff0c;其官网为&#xff1a;Babraham Bioinformatics - FastQC A Quality Control tool for High Throughput Sequence Data 高通量测序数据的高级质控工具输入…

系统分析与设计(2)

电子商务&#xff08;e-commerce&#xff09; 电子业务&#xff08;e-business&#xff09; 数据&#xff08;Data&#xff09; 信息&#xff08;Information&#xff09; 知识&#xff08;Knowledge&#xff09; 知识产权管理&#xff08;knowledge Asset Management&#xff…

7. DAX 时间函数-- DATE 日期--TOTALMTD、TOTALQTD、TOTALYTD

函数名目的语法返回值TOTALMTD计算当前上下文中该月份至今的表达式的值 。TOTALMTD ( <表达式>, <日期列>, [<筛选器>] )标量 表示表达式的标量值&#xff0c;在“日期”中给定日期&#xff0c;计算当前月份至今的日期 。TOTALQTD计算当前上下文中该季度至今…

selenium篇-基础用法

Selenium WebDriver 是一款流行的自动化测试工具&#xff0c;用于模拟浏览器的各种操作。以下是一些Selenium WebDriver 中最常用的基本命令和方法摘要&#xff1a; 打开网页 (Get) 使用 get() 方法打开指定URL&#xff1a; Python 1driver.get("http://www.example.com&…

安卓Dagger框架:依赖注入实践与应用

摘要 Dagger是适用于Android和Java生态系统的强大依赖注入(Dependency Injection, DI)工具&#xff0c;以其编译时生成代码和高效的运行时性能而著称。本文旨在深入探讨Dagger的核心概念、工作流程、优缺点以及实际代码示例&#xff0c;以便开发者更好地理解并有效利用这一框架…

Github 2024-04-20 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-04-20统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量非开发语言项目2Python项目2Swift项目2HTML项目1CSS项目1Go项目1C项目1C++项目1Rust项目1编程面试大学:成为软件工程师的全面学习计划 创建周期…

【最新可用】Claude国内镜像,可上传图片,可用Claude3全系模型,包括Pro版本的Opus),亲测比GPT好用

Claude对话、上传图片的超详细教程来啦&#xff01; 近期&#xff0c;Claude 3 Opus的发布引发了网络上的广泛关注与热议&#xff0c;有观点认为其性能已经凌驾于GPT-4之上。虽然网络上已经出现了大量基于这两款先进AI技术的实际应用案例&#xff0c;但仍有许多人对在国内如何…

SHELL脚本编程----netstat练习4-输出和3306端口建立连接总的各个状态的数目

描述 假设netstat命令运行的结果我们存储在nowcoder.txt里&#xff0c;格式如下&#xff1a; Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:6160 0.0.0.0:* LISTEN tcp 0 0…

Spring Boot集成atomikos快速入门Demo

1.什么是atomikos Atomikos是一个轻量级的分布式事务管理器&#xff0c;实现了Java Transaction API (JTA)规范&#xff0c;可以很方便的和Spring Boot集成&#xff0c;支持微服务场景下跨节点的全局事务。Atomikos公司官方网址为&#xff1a;https://www.atomikos.com/。其旗下…

Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)

文章目录 一、JavaFx介绍1、JavaFx简介2、可用性3、主要特征4、UI控件 二、JavaFx概述1、JavaFx结构图2、JavaFx组件&#xff08;1&#xff09;舞台&#xff08;2&#xff09;场景① 场景图② 节点 &#xff08;3&#xff09;控件&#xff08;4&#xff09;布局&#xff08;5&a…

ubuntu在docker容器中安装strongswan

1.起动一个ubuntu容器&#xff0c;我是用的docker compose启动的&#xff0c;compose的配置文件为ipsec-strongswan.yml services:ipsec-strongswan:image: ubuntu:22.04container_name: ipsec-strongswancap_add:- NET_ADMIN- SYS_ADMIN- SYS_MODULEcommand: "tail -f /…

Unity射击游戏开发教程:(2)实例化和销毁游戏对象

现在我们有了“飞船”,我们可以在屏幕上移动它,现在我们需要发射一些激光!与宇宙飞船一样,我们将让事情变得简单并使用 Unity 自己的基本形状。舱体的效果很好,所以我们来创建一个。 我们保存了有关位置、旋转和缩放的信息。我们想要缩小这个对象,假设每个轴上缩小到 0.2…

【声呐仿真】学习记录1-配置dave、uuv_simulator

【声呐仿真】学习记录1-配置dave、uuv_simulator 1.介绍2.配置3.一些场景 1.介绍 家|DAVE项目 — Home | Project DAVE 2.配置 参考官方教程安装|DAVE项目 — Installation | Project DAVE mkdir -p ~/uuv_ws/src cd ~/uuv_ws/src git clone https://github.com/Field-Robot…

二维图像的双线性插值

1. 原理 见下图,假设原图为单通道的灰度图,想求图像中某点Q(x,y)的灰度值。 2. 代码实现 #include <iostream> #include <stdio.h> #include <stdint.h> #include <string> #include<opencv2/opencv.hpp> #include<opencv2/core.hpp>…

踏上R语言之旅:解锁数据世界的神秘密码(二)

R语言学习 文章目录 R语言学习1.数据的R语言表示2.多元数据的R语言调用3.多元数据的简单R语言分析 总结 1.数据的R语言表示 数据框&#xff08;data frame) R语言中用函数data.frame()生成数据框&#xff0c;其句法是&#xff1a; data.frame(data1,data2,…)&#xff0c;例如…

OpenHarmony网络协议通信—kcp

kcp 是一种 ARQ 协议,可解决在网络拥堵情况下 tcp 协议的网络速度慢的问题 下载安装 直接在 OpenHarmony-SIG 仓中搜索 kcp 并下载。 使用说明 准备一套完整的 OpenHarmony 3.1 Beta 代码 库代码存放路径&#xff1a;./third_party/kcp 修改添加依赖的编译脚本 在/develo…

Bridge 2024(Br2024):革新文件管理,提升创意思维的卓越工具

Bridge 2024&#xff08;Br2024&#xff09;是一款专为Mac和Windows用户设计的数字媒体管理软件&#xff0c;以其出色的文件管理和项目管理功能&#xff0c;成为创意专业人士不可或缺的工作伙伴。这款软件不仅继承了Adobe Bridge一贯的直观界面和强大功能&#xff0c;更在多个方…

基于 LLM 大模型 Agent 的实践总结和困境分享

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 基于大模…

树莓派+Openwrt连接校园网,打破校园网设备限制

前言 因为本校学生校园网只允许最多三个设备登录&#xff0c;对于同时拥有多个联网设备的我十分不友好&#xff0c;而且大多单片机如esp32的wifi模块是只允许一般的WPA/WPA2认证的&#xff0c;是不支持校园网的portal认证。所以我决定搞一个路由器。 然后我上网买了一个TP-Li…