第一章 本书学习方法
为了让大家更好的学习和使用本书,本章将给大家介绍一下本书的学习方法,包括:本书的学习顺序、编写规范、代码规范、资料查找、学习建议等内容。
本章将分为如下几个小节:
1.1 本书学习顺序
1.2 本书参考资料
1.3 本书编写规范
1.4 本书代码规范
1.5 例程资源说明
1.6 学习资料查找
1.7 给初学者的建议
1.1 本书学习顺序
为了让大家更好的学习和使用本书,我们做了以下几点考虑:
1,坚持循序渐进的思路编写,从基础到入门,从简单到复杂。
2,将知识进行分类介绍,简化学习过程,包括:基础篇、入门篇、提高篇。
3,将板卡硬件资源介绍独立成一个文档(《ESP32-S3开发板硬件参考手册.pdf》)。 因此,开发者在学习本书的时候,我们建议:先通读一遍《ESP32-S3开发板硬件参考手册.pdf》,对板卡的硬件资源有个大概的了解,然后从本书的基础篇开始,再到入门篇,最后是提高篇,循序渐进,逐一攻克。
对于初学者,更是要按照以上建议的学习路线进行学习,不要跳跃式学习,因为本书中的知识是环环相扣的,如果没有掌握前面的知识,就去学习后面的知识,就会学的非常吃力。
对于已经有了一定单片机基础的开发者,就可以跳跃式地学习,学习效率,当然了,若是遇到不懂的知识点,也得查阅前面的知识点进行巩固。 1.2 本书参考资料
本书主要参考的资料有以下两份文档:
《esp32-s3-wroom-1_wroom-1u_datasheet_cn.pdf数据手册》
《esp32-s3_technical_reference_manual_cn.pdf技术手册》
前者是乐鑫官方针对S3系列ESP32-S3提供的数据手册,该数据手册提供了关于这些微控制器的详细信息,包括它们的特性、性能指标、引脚布局、电路原理图以及其他相关的技术文档。这对于开发人员、工程师和爱好者来说是非常有用的,可以帮助他们了解和使用这些微控制器,以及设计相关的嵌入式和物联网应用。 后者是乐鑫官方针对S3系列ESP32-S3提供的技术参考手册,该技术参考手册包含了对Xtensa32位双内核和其使用的指令集、寄存器、外设描述等的支持文档。
以上提及的两份文档也是开发者在学习本书的过程中必不可少的参考资料,开发者可以在A盘à8,ESP32-S3参考资料中找到这两份文档。
1.3 本书编写规范
本书通过数十个例程,给大家详细介绍ESP32-S3的所有功能和外设,按难易程度以及知识结构,我们将本书分为三个篇章:基础篇、入门篇和提高篇。
基础篇,共9章,主要是一些基础知识介绍,包括开发环境搭建、新建工程、ESP32-IDF介绍和menuconfig介绍等,这些章节在结构上没有共性,但是互相有关联,有一个集成的关系在里面,即:必须先学了前面的知识,才好学习后面的知识点。
入门篇和提高篇,共五十五章,详细介绍了ESP32-S3每一个外设的使用方法及驱动代码,并且还介绍了一些非常实用的程序代码(纯软件例程),如:内存管理、文件系统读写、SD卡读取、图片解码、音频解码、视频解码、USB、Wi-Fi、AI以及人脸识别等。这两篇内容占了本书的绝大部分篇幅,而且这些章节在结构上都比较有共性,一般分为4个部分,如下:
1,外设功能介绍
2,硬件设计
3,程序设计
4,下载验证
外设功能介绍,简单介绍具体章节所要用到的外设功能、框图和寄存器等,让大家对所用外设的功能有一个基本了解,方便后面的程序设计。
硬件设计,包括具体章节的实验具体功能说明、所用到的硬件资源及原理图连接方式,从而知道要做什么?需要用到哪些IO口?是怎么接线的?方便程序设计的时候编写驱动代码。
程序设计,一般包括:驱动介绍、配置步骤、程序流程图、关键代码分析、main函数讲解等三部分。一点点介绍程序代码是怎么来的,注意事项等,从而学会整个代码。
下载验证,属于实践环节,在完成程序设计后,教大家如何下载并验证我们的例程是否正确? 完成一个闭环过程。
1.4 本书代码规范
为了方便大家编写高质量代码,我们对本书的代码风格进行了统一,详细的代码规范说明文档,见光盘:A盘à1,入门资料à《嵌入式单片机 C代码规范与风格.pdf》,初学者务必好好学习一下这个文档。
总结几个规范的关键点:
1,所有函数/变量名字非特殊情况,一般使用小写字母;
2,注释风格使用doxgen风格,除屏蔽外,一律使用 /* */ 方式进行注释;
3,TAB键统一使用4个空格对齐,不使用默认的方式进行对齐;
4,每两个函数之间,一般有且只有一个空行;
5,相对独立的程序块之间,使用一个空行隔开;
6,全局变量命名一般用g_开头,全局指针命名一般用 p_开头;
7,if、for、while、do、case、switch、default等语句单独占一行,一般无论有多少行执行语句,都要用加括号:{}。
1.5 例程资源说明
ESP32-S3开发板的配套资料中,除了《00_basic》之外,还提供了37个标准例程。这些例程都是基于C语言和ESP32-IDF进行编写的。这些例程大部分是原创的,并附有详细的注释,代码风格统一,内容循序渐进,非常适合初学者入门。
ESP32-S3开发板配套的例程如下表所示:
编号 | 实验名字 | 编号 | 实验名字 |
基础应用 |
00 | 00_basic | 19 | 19_ds18b20 |
01 | 01_led | 20 | 20_dht11 |
02 | 02_key | 21 | 21_rng |
03 | 03_exit | 22 | 22_qma6100p |
04 | 04_uart | 23 | 23_rgb |
05 | | 24 | 24_touch |
06 | 06_gp_timer | 25-1 | 25_1_camera |
07 | 07_wdt | 25-2 | 25_2_camera_photograph |
08-1 | 08-1_sw_pwm | 26 | 26_sd |
08-2 | 08-2_hw_pwm | 27 | 27_spiffs |
09 | 09_iic_exio | 28 | 28_chinese_display |
10 | 10_iic_eeprom | 29 | 29_pictures |
11 | 11_oled | 30 | 30_music |
12 | 12_spilcd | 31 | 31_recoding |
13 | 13_rtc | 32 | 32_videoplayer |
14 | 14_adc | 33 | 33_usb_uart |
15 | 15_ap3216c | 34 | 34_usb_flash_u |
16 | 16_infrared_reception | 35 | 35_usb_sd_u |
17 | 17_infrared_transmission | 36 | 36_bootloader |
18 | 18_internal_Temperature | | |
FreeRTOS例程 |
01 | 01_Trends_task_creation_and_deletion | 10 | 10_Counting_type_semaphore_operation |
02 | 02_Static_task_creation_and_deletion | 11 | 11_Priority_inversion |
03 | 03_Task_suspension_and_recovery | 12 | 12_Mutex_semaphore |
04 | 04_Insertion_and_deletion_list_items | 13 | 13_Software_Timers |
05 | 05_Time_slice_scheduling | 14 | 14_Event_flag |
06 | 06_Queue_operation | 15 | 15_Task_notification_simulation_binary_semaphore |
07 | 07_Queue_Set | 16 | 16_Task_notification_analog_count_semaphore |
| 08_Queue_Set_Simulation_Event_Flags | | 17_Task_notification_simulation_message_email |
09 | 09_Binary_semaphore_operation | 18 | 18_Task_notification_simulation_event_flag_group |
WiFi例程 |
01 | 01_WiFi_SCAN | 06 | 06_WiFi_TCPClient |
02 | 02_WiFi_STA | 07 | 07_WiFi_TCPServer |
03 | 03_WiFi_AP | 08 | 08_WiFi_MQTT_ALIYUN |
04 | 04_WiFi_SmartConfig | 09 | 09_WiFi_CAMERA |
05 | 05_WiFi_UDP | | |
AI例程 |
01 | 01_Face_detection_project | 04 | 04_qr_detection_project |
02 | 02_Face_recognition_project | 05 | 05_color_detection_project |
03 | 03_catface_detection_project | 06 | 06_motion_detection_project |
表1.5.1 DNESP32S3开发板基础例程表
从上表可以看出,正点原子DNESP32S3 开发板的例程基本上涵盖了ESP32-S3芯片的所有内部资源,并且外扩展了很多有价值的例程,比如:基础入门实验、摄像头、RGB、触摸、物联网、AI等。
而且从上表可以看出,例程安排是循序渐进的,首先从最基础的新建一个工程开始,然后一步步深入,从简单到复杂,有利于大家的学习和掌握。所以,正点原子ESP32-S3开发板是非常适合初学者的。当然,对于想深入了解ESP32-S3内部资源的朋友,正点原子ESP32-S3开发板也绝对是一个不错的选择。
1.6 学习资料查找
1,ESP-IDF编程指南
ESP-IDF编程指南包含了ESP官方推出的几款芯片的编程指南,这里我们选择ESP32-S系列的ESP32-S3即可,如下图所示:
图1.6.1 ESP32-S3相关资料
ESP-IDF编程指南包含了IDF的快速入门、API参考、H/W硬件参考以及API指南等,我们在开发过程中主要用到API参考,如下图示:
图1.6.2 ESP32-S3相关资料
该教程是针对ESP32-S3芯片及IDF开发的详细指南,包括硬件准备、IDF编程及使用等方面。通过该教程的学习和实践,读者可以掌握使用IDF进行ESP32开发的基本技能和方法,并能更好地应用ESP32进行物联网应用开发。
ESP官方论坛网址,读者可在该论坛上获取相应的ESP资料。为了方便开发者学习,ESP官方论坛分别提供了中、英文两种语言的论坛,如下图所示:
图1.6.3 ESP官方论坛
读者可以根据您的需求进行选择使用哪一种语言的社区来进行学习。
3,正点原子的学习资料
正点原子提供了大量的学习资料,为方便读者下载所有正点原子最新最全的学习资料,这些资料都放在正点原子文档中心,如下图所示(正点原子文档中心会不时地更新,以保证为读者提供最新的学习资料):
图1.6.4 正点原子文档中心
在文档中心下面,我们可以找到正点原子所有开发板、模块、产品等的详细资料下载地址。
4,正点原子论坛
正点原子论坛,即开源电子网,该论坛从2010年成立至今,已有十多年的时间,拥有数十万的注册用户和大量嵌入式相关的帖子,每天有数百人互动,是一个非常好的嵌入式学习交流平台。 5,博客和教程网站
在互联网上搜索与ESP32-S3和IDF相关的博客和教程网站。这些网站通常会提供详细的步骤和示例代码,帮助您逐步掌握ESP32-S3的开发技巧。
6,视频教程
在B站等视频平台上搜索与ESP32-S3和IDF相关的教程视频。这些视频可以直观地展示开发过程和示例代码的执行效果,有助于初学者快速入门。
7,在线课程和教育资源
寻找与ESP32-S3和IDF相关的在线课程和教育资源,例如在线教程、视频课程、教科书等。这些资源通常由教育机构、专业网站或个人开发者提供。
总之,通过以上方法,您可以找到大量与ESP32-S3和IDF开发相关的资料。在查找和学习过程中,请注意选择可靠和最新的资源,并根据自己的需求和水平进行选择和学习。
在学习过程中,我们难免会遇到一些问题,有任何问题,大家都可以先去开源电子网搜索一下,基本上你能遇到的问题,我们论坛都有人问过了,所以可以很方便的找到一些参考解决方法。如果实在找不到,你也可以在论坛提问,每天原子哥都会在上面给大家做解答。
1.7 给初学者的建议
学习ESP32-S3的三点建议:
1,准备开发板:选择适合的开发板,并配备调试接口,以便在实际开发板上运行和调试程序。这有助于加深对程序执行过程的理解,并方便查找和解决错误。
2,阅读参考资料:《esp32-s3-wroom-1_wroom-1u_datasheet_cn.pdf数据手册》、《esp32-s3_technical_reference_manual_cn.pdf技术规格书》和《isa-summary.pdf》是学习ESP32的重要参考资料。这些手册对于理解ESP32-S3和Xtensa® LX7内核有很大帮助,尤其是对于初学者,需要多看多了解。
3,保持耐心和积极态度:学习ESP32-S3需要时间和耐心,遇到问题和难点时不能气馁或逃避。尝试自己解决问题,掌握解决问题的技巧和方法。同时要勤于思考和实践,举一反三,通过实践来加深理解和掌握知识。如果C语言基础不够扎实,建议先学习C语言基础,以便更好地理解和掌握ESP32-S3的相关知识。