esp32学习笔记1

esp32上电后,操作系统跑起来后,最终会用到app main函数
板子启动流程
第一阶段的bootloader加载第二阶段的bootloader,第一阶段的位于ROM中,无法知道其源码。第二阶段的位于0c1000的flash中。
第二阶段的bootloader加载分区表以及用户app,就是freetos。第二个cpu和操作系统的调度器就会执行。
第一阶段的bootloader加载第二阶段的bootloader后,通过判断后者的二进制头就可知第二阶段的bootloader。
中断处理函数必须放入IRAM中,通过加属性。

板子启动

地址映射

setup

1、cores文件夹就是默认使用编译的文件。
2、PEROCPU运行起来freetos之前,先运行了app main函数,此函数在main app里。
3、除了cores文件夹下和librarise下面的文件,其它文件都被放到.a库文件里,esp32\tools\sclk\lib文件夹下。

先调用setup,再调用loop函数,然后一直循环,因此如果不再setup函数里面创建任务的话,相当于跑一个用户程序。

PRO CPU操作系统的任务创建

使用esp32大部分的CPU外设资源都有例程。
arduino支持c++。
librarise文件夹下的库文件,如果不包含库头文件,无法使用里面的源文件。
5 idf怎么阅读编辑源码

6使用工具下载

下载

注意文件选择正确。
在这里插入图片描述
这个下载差不多是历时两晚。

错误1:
在这里插入图片描述

can’t open file ‘./RESOURCE/IDLE_S.bmp’ (error 0: 操作成功完成。)
把整个安装包换一个路径就好了

错误2:
在这里插入图片描述
板子的确插上去了,但是显示的仍然是等待上电同步,应该是板子的问题。
点stop,重新插拔一下,按住boot不放 再点start,有反应之后,再松开boot。尝试了两次,果然连上了。

错误3:
找不见对应的文件,通过果云的群才找到。

wifi的AT指令使用

1、波特率默认是115200。
2、USB和TTL,共地,GPIO16是RX接USB转TTL的TX。
AT指令使用(教程)
在这里插入图片描述
实践失败
在这里插入图片描述
版本过低问题,无AT指令库。又下载5.13版本。
在这里插入图片描述
以上是因为没有按boot键。
按Boot键重新下载。
在这里插入图片描述

wifi用处

发数据,当作客户端使用(大部分),因为大部分情况esp32无法进入公网,有些网络也可以进入公网;
当作服务器端来使用,必须让esp32进入公网,一般通过端口映射进入。
连接网络后,就是通过网络交互数据。

使用AT固件,esp32无法控制外设,只能当作数据中转站使用。

看AT指令集(wifi)

网络调试助手,串口网络数据调试器。
建立station连接局域网路由器。
向局域网收发数据。
连接公网IP进行收发数据。
程序开发时要先用串口助手把各种情况模拟清楚,对AT返回值进行不同处理,保证产品稳定性。
连接上wifi:
在这里插入图片描述
连接局域网
蓝牙指令使用

7 源码阅读与阅读查询技巧

1.使用阅读软件source insight。
关闭杀毒软件后才下载了一个破解版的。
2.添加源文件。
3.添加头文件,按照视频教程已添加一部分头文件,但是还有很多库被编译成了.a文件,所以要添加头文件(tools sdk include)。
4.同步,解析符号链接。
5.例程查找定义技巧。
6.c++中的类相当于c语言中的结构体。
冒号表示继承。
::表示域,类的成员函数的实现。
public 被他修饰的成员变量或者成员函数可以直接被实例直接调用。
private 被其修饰的只能在类内部使用,且不能被继承。
protect类和继承者才能被使用。

在这里插入图片描述
Source Insight可以快速的对源程序结构以及源程序中出现的变量、函数进行分析,并且用不同的图标来表示,如用:
在这里插入图片描述
表示宏定义,如头文件、条件编译命令等。
在这里插入图片描述
表示变量
在这里插入图片描述
表示函数
同时,源程序的文本用不同的颜色来显示,表示代码的不同意义。其中默认注释为蓝色显示,变量和函数用深蓝色显示,头文件用黄色表示等。这些显示规则我们可以通过设置菜单来改变,不过建议大家不要修改这些属性,这样便于大家的源程序互相阅读。

文件以.c或.cpp结尾.

Source Insight使用教程https://blog.csdn.net/guotao1983/article/details/81866594

编程移植技巧

wifi编程

现在相关例程里做移植测试。
没有相关功能,找到与例程相关的源文件。

8触摸传感器例程分析

因为没有按键呀。按下电容值大,输出脉冲少,电压速率变化慢。
由软件或专用硬件计时
触摸管脚是否受到触碰:
1.由软件直接检查触摸传感器的寄存器
2.由触摸监测模块发起的中断信号判断
3.由触摸监测模块上的CPU视口从Deep-sleep中唤醒判断
extern void pinMode(uint8_t pin,uint8_t mode)_ _attibute((weak,allas("__pinMode")));
weak 弱函数,如果在其它地方重新定义此函数,这里的定义将不起作用
Alias是后面的函数的别名的意思,
运行touchread
在这里插入图片描述
可添加中断

WIFI使用方式简介

STATION模式,类似客户端,最常用,开发用此模式,连接路由器,查看自己的IP和MAC之类的功能。通过路由器连入公网,然后与公网的服务器进行互动。

STA模式,不常用,设置名字和密码,分配IP地址等功能。大部分只能在局域网使用,模块相当于一个路由器,因为模块没有公网IP,只能局域网使用。

编程要点
1.如何开启此模式
2.怎么扫描AP,如何接入AP
WiFi.begin(STA_SSID, STA_PASS);接入路由器的用户名和密码
scanNetworks()函数扫描,返回扫描到网络的个数
getNetworkinfo()函数获取每个扫描到的网络的信息
3.AP模式如何打开,设置AP的SSID和密码
WiFi.mode(WIFI_AP);设置AP的模式
WiFi.softAP(AP_SSID);可传用户名密码
4.模块怎么创建服务sever和client,怎么交互数据
WiFiServer server(80);定义一个server实例
Serial.begin(115200);开启server
WiFiClient client = server.available();是否有客户端连接
if (client.available())判断客户端是否有上发数据
char c = client.read(); 读取客户端发来的数据
client.stop();关闭连接
WiFiClient client;创建一个客户
client.connect(host, httpPort)连接服务
client.print()发送数据到服务器
client.available()查询是否有数据可读
client.readStringUntil(’\r’);读字符串直到’\r’,用别的函数也可以读字符串
client.stop();关闭连接
5.事件,什么时候扫描完成,连接,断开连接等事件,怎么知道此事件发生。
WiFi.onEvent();函数可知事件发生

6.其它高级用法,进行HTTP请求等

编程
WIFI切换例程,直观感受此例程如何开启AP和STATION,以及事件处理方法。
WiFi当作客户端,连入一个sever等待客户端连入,或者创建一个client连接公网的IP(就是socket编程),然后和这个服务进行数据交换。
WIFi当作AP,此时不能连入路由器,连入路由器的都是STATION模式。

10模式切换及事件处理

可用touchResd代替digitalRead
延时消抖

11WIFI当作STATION接入路由器

实践

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ESP32的FreeRTOS使用上与传统的FreeRTOS有一些区别。在ESP32中,基本不需要单独配置FreeRTOSConfig.h文件,因为ESP-IDF中的menuconfig功能可以对所有涉及到的内容进行配置,使用起来更加直观和便利。主要的数据类型说明中,有一个重要的数据类型是TickType_t。 在ESP32的魔改版FreeRTOS中,很少使用正经的事件集,而是使用ESP-IDF提供的更方便的事件循环。这使得在ESP32中使用事件循环更加方便。 另外,ESP32的分区表是采用二进制格式而不是CSV文件。ESP-IDF提供了gen_esp32part.py工具来配置和构建分区表。默认情况下,使用的是默认分区表。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【ESP32+freeRTOS学习笔记-(一)freeRTOS介绍】](https://blog.csdn.net/weixin_45499326/article/details/128226443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ESPIDF开发ESP32学习笔记ESP32上的FreeRTOS】](https://blog.csdn.net/qq_40500005/article/details/114794039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值