stm32c8t6 + esp8266

再写DHT11的时候卡住了,卡了很久才解决

我总结了:1.单片机板子坏了一定要及时换,平时要准备备份。

2,单总线协议不稳定,使用时对时序的要求很严苛,所以一定要使用精准的定时比如SysTick计时,不然很有可能会无法使用,之前我是用的tim2做的粗略定时(下图)就没法用单总线。

ESP8266的三种模式

WiFi的STA和AP模式指什么?-CSDN博客

AP模式:相当于路由器,作为无线热点,可以连上。这个模式下可以设置三个子模式,TCP服务器,TCP客户端,UDP。手机或电脑可以直接和模块连接形成局域网

STA模式:连接路由器的设备,串口无线模式,模块作为无线WIFI STA,用于连接到无线网,实现串口和其他设备的无线数据传输 ,也有三个子模式

AP+STA模式:既相当于路由器,又相当于连接路由器的设备

透传:连续发送数据,只能在单链模式(只有一个客户端连接服务器 或者 只有一个服务器连接客户端)下开启

非透传:每次发送数据前都要发送AT指令

  • 透传模式是ESP8266直接将串口数据通过Wi-Fi发送到目标设备,并将目标设备返回的数据通过串口发送回去。
  • 非透传模式是通过发送AT指令来控制ESP8266的连接和通信行为。
  • 透传模式(Transparent Mode): 在透传模式下,ESP8266将串口接收到的数据直接通过Wi-Fi发送到目标设备,同时将目标设备返回的数据通过串口发送回去。这种模式下,ESP8266只是一个数据传输的中继器,不对数据进行处理或解析。透传模式适用于需要将串口数据通过Wi-Fi传输的场景,例如远程控制、数据采集等。

  • 非透传模式(Non-Transparent Mode): 在非透传模式下,ESP8266可以通过AT指令控制其连接和通信行为。用户可以通过发送特定的AT指令来配置ESP8266的工作模式、连接到指定的Wi-Fi网络、进行数据传输等操作。非透传模式提供了更多的灵活性和控制能力,但需要用户编写和发送AT指令来实现相应功能。

字符串的定义:
                1.char ch[ ] = {'a','b','c','d'};
                2.char ch[ ] = "hello";
字符串的本质就是数组,只不过比字符数组多存了一个标志字符“\0”,"\0"就时字符串的结束标志。
 

sprintf()h和snprintf

C 字符串函数 sprintf()、snprintf() 详解_sprintf和snprintf-CSDN博客

char和cahr*的区别

char[]和char*的区别_char和char*的区别-CSDN博客

字符串操作函数strstr

char *strstr( const char *str1, const char *str2 );

strstr函数是在字符串str1中查找是否含有字符串str2,如果存在,返回str2在str1中第一次出现的地址;否则返回NULL。

esp8266:

直接用这个烧录器

有回显

无回显

连接的WIFI的名字尽量设简单点,我设置的名字是knc!结果可能是大小写的一些问题导致一直连不上,索性直接改成knc就连上了,还有esp8266只能连2.4G的频段,建议用手机把热点改为2.4G。

因为设备不共地导致连不上(阿里云),一个是电池供电,一个是电脑供电(如何可以使他们两个共地呢?因为ttl和单片机公地,所以我们可以再把单片机和电池主板共地)。

像USART,I2C,SPI这种协议必须共地,只有差分的不要!

上报和下发的格式(格式是一样的,上发下发通用)

中继站(可以和MQTT软件配合获得下发和上传的格式)

再写esp8266的下发处理时可以直接找从i往后数

画原理图的时候直接用引脚表示,这样简单易懂,不容易画错

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用STM32C8T6ESP8266连接的示例代码: ``` #include <SoftwareSerial.h> //引入ESP8266通信库 #define RX D2 //ESP8266的RX引脚连接STM32的D2引脚 #define TX D3 //ESP8266的TX引脚连接STM32的D3引脚 SoftwareSerial esp8266(RX, TX); //创建一个ESP8266对象 void setup() { Serial.begin(9600); //初始化串口通信 esp8266.begin(9600); //初始化ESP8266通信 delay(1000); //等待ESP8266启动 Serial.println("ESP8266连接中..."); esp8266.println("AT"); //发送AT指令检测ESP8266是否连接成功 delay(2000); //等待ESP8266回复 if(esp8266.find("OK")){ //如果ESP8266连接成功 Serial.println("ESP8266连接成功"); esp8266.println("AT+RST"); //重置ESP8266 delay(2000); esp8266.println("AT+CWMODE=1"); //将ESP8266设置为Station模式 delay(2000); esp8266.println("AT+CWJAP=\"WiFi名称\",\"WiFi密码\""); //连接WiFi delay(5000); }else{ Serial.println("ESP8266连接失败"); } } void loop() { if(esp8266.available()){ //如果ESP8266有数据可读 Serial.write(esp8266.read()); //将ESP8266接收到的数据通过串口输出 } if(Serial.available()){ //如果STM32有数据可读 esp8266.write(Serial.read()); //将STM32接收到的数据通过ESP8266发送出去 } } ``` 在这个示例代码中,使用了SoftwareSerial库来实现STM32ESP8266之间的串口通信。当STM32有数据可读时,通过esp8266.write()函数将数据发送给ESP8266;当ESP8266有数据可读时,通过Serial.write()函数将数据发送给STM32。通过这种方式,实现了STM32ESP8266之间的双向通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值