boringhex.top博客

非典型程序员的小破站

内置指令

CMake 内置了很多指令,下面列举了一些常用的指令:

  1. add_executable:指定生成可执行文件。
  2. add_library:指定生成库文件。
  3. add_subdirectory:添加子目录。
  4. aux_source_directory:自动收集目录下的源文件。
  5. cmake_minimum_required:指定所需的 CMake 最低版本。
  6. execute_process:在构建时执行外部程序。
  7. find_package:查找库文件和头文件。
  8. include_directories:指定头文件搜索路径。
  9. link_directories:指定库文件搜索路径。
  10. list:操作列表,例如添加、删除、查找、排序等。
  11. message:输出信息、警告、错误等消息。
  12. project:声明项目名称和使用的编程语言。
  13. set:设置变量的值。
  14. target_include_directories:为目标指定头文件搜索路径。
  15. target_link_libraries:为目标指定链接库。
  16. option:提供一个用户可以选择的选项。
  17. file:对文件进行操作,如读取、写入、删除等。
  18. install:指定项目安装时的目标文件和路径。
  19. string:操作字符串,例如转换为大写、小写、比较等。
  20. ifelseifelseendif:条件语句。
阅读全文 »

在CMake中,函数用于封装一段可重用的代码。下面是CMake函数的定义和调用的详细讲解。

定义函数

函数的定义使用function()来开始,然后指定函数名称以及任何形参列表,如下所示:

1
2
3
function(<function_name> [arg1 [arg2 [...]]])
# Function code...
endfunction()

函数名称应该是唯一的,以避免与其他函数发生冲突。关键字function()endfunction()之间的代码是函数代码块。

这里的形参列表是可选的,您可以为您的函数定义零个、一个或多个参数。注意,函数调用中的参数列表是以空格分隔的,因此每个参数将自动映射到定义中的参数。

阅读全文 »

在前一篇文章 esp32 初识 cmake 构建工具 中,已经用”hellow world”程序介绍了cmake最基本的用法,今天详细讲解CMakeLists.txt文件。

CMakeLists.txt

CMakeLists.txt文件是CMake构建工具的核心配置文件。它包含了构建项目所需的一系列指令和参数,CMake会根据这些信息生成相应的构建文件。CMakeLists.txt文件通常位于项目的顶层目录,并可在子目录中包含其他的CMakeLists.txt文件以组织复杂项目的构建过程。

CMakeLists.txt文件包含以下几类指令:

  1. 项目设置:定义项目名称、版本、目标平台等信息
  2. 指定源文件和头文件:指定项目中要编译的源文件和头文件
  3. 添加子目录:将子目录加入构建过程,子目录中可以包含其它的CMakeLists.txt文件
  4. 设置编译器和链接器选项:例如,指定编译标志、链接库等
  5. 添加可执行文件和库:指定要生成的可执行文件、静态库或动态库
  6. 添加依赖和链接库:指定项目需要的外部库和头文件路径
阅读全文 »

ESP-IDF工具链依赖cmake和ninja来管理项目构建过程,今天先学习cmake。

CMake

CMake是一个开源的跨平台自动化构建系统,用于管理软件编译和构建过程。它可以生成各种平台的Makefile或者项目文件,使得软件的编译和构建过程可以在不同的平台和编译器上进行。CMake使用CMakeLists.txt文件来描述项目的构建设置和依赖关系。

CMake可以帮助开发人员轻松管理和构建大型项目。CMake的优势主要体现在以下几个方面:

  1. 跨平台:CMake支持多种平台,如Windows、Linux、macOS等。这意味着您可以使用相同的CMakeLists.txt文件在不同的平台上构建项目,而无需为每个平台编写特定的构建脚本。

  2. 自动生成构建文件:CMake可以根据项目配置生成各种构建系统的文件,如Makefile、Visual Studio解决方案等。这使得开发人员可以专注于编写代码,而不必花时间维护构建脚本。

  3. 易于维护:CMake使用简洁的语法,易于理解和维护。此外,CMake的模块化设计使得将项目分解为多个独立的组件变得更加容易,这有助于提高项目的可维护性。

  4. 强大的功能:CMake提供了丰富的内置函数和模块,支持各种编译器和构建工具。此外,CMake还支持自定义函数和模块,以满足特定项目的需求。

  5. 高效的构建:CMake支持并行构建,可以有效地利用多核处理器来加速编译过程。此外,CMake还支持增量构建,这意味着当您对项目进行修改时,只有受影响的部分需要重新构建,从而节省了大量时间。

  6. 社区支持:CMake有一个活跃的社区,开发人员可以在其中寻求帮助和分享经验。此外,许多开源项目已经采用CMake作为其构建系统,这意味着您可以在很多实际项目中找到CMake的使用示例。

阅读全文 »

mpu6050

MPU-6050是InvenSense公司生产的一款六轴运动处理器,集成了3轴加速度计和3轴陀螺仪。它将两个传感器集成到一个极小的封装里,使得对六轴运动的检测变得更加简单和方便。这款传感器广泛应用于运动控制和测量领域,如无人机、智能手机、运动手环等。

以下是根据所提供的数据表得到的MPU-6050的详细特性:

  1. 尺寸和接口

    • 封装尺寸:4mm x 4mm x 0.9mm
    • 通信接口:I2C(双线串行接口)
  2. 测量范围和灵敏度

    • 加速度计测量范围:±2g、±4g、±8g、±16g(可配置)
    • 加速度计灵敏度:16384 LSB/g(±2g)、8192 LSB/g(±4g)、4096 LSB/g(±8g)、2048 LSB/g(±16g)
    • 陀螺仪测量范围:±250°/s、±500°/s、±1000°/s、±2000°/s(可配置)
    • 陀螺仪灵敏度:131 LSB/°/s(±250°/s)、65.5 LSB/°/s(±500°/s)、32.8 LSB/°/s(±1000°/s)、16.4 LSB/°/s(±2000°/s)
  3. 分辨率

    • 加速度计:16位ADC(模拟数字转换器)
    • 陀螺仪:16位ADC
  4. 内置数字运动处理器(DMP)

    • 可以实现高级运动处理功能,如六轴运动融合、姿态估计等
    • 可以减轻主控制器的计算负担
  5. 低功耗和工作电流

    • 工作模式:连续采样,低功耗
    • VDD工作电压:2.375V - 3.46V
    • 工作电流: 500uA(加速度计), 3600uA(陀螺仪),低功耗模式下可降低
    • 关断模式电流:5µA
阅读全文 »

程序员的世界有个不成文的约定,第一个程序先跑”hello world”,今天我们就在esp32上跑下hello world!

vs code配置

新建一个esp32-test文件夹,并在该文件夹下打开vs code:

1
2
mkdir esp32-test
cd est32-test && code .
阅读全文 »

运行esp32示例程序时注意到右下角有”ESP-IDF QEMU”按钮,好奇,就点了一下,发现这个是与docker开发容器关联的,乐鑫提供了一套docker镜像来进行esp32开发。

在vs code中要先安装”dev container”插件,然后这个插件会自动检测系统环境,完成docker安装。

但是示例程序中的开发容器配置有问题:

阅读全文 »

之前的文章 ESP32+MicroPython开发环境的搭建 介绍了ESP32 MicroPython开发环境的搭建,此次计划采用ESP32-C3做小飞机主控,不太适合用MicroPython,要用ESP-IDF原生框架,因为平时一直用vs code编辑器,所以就选了vs code做开发环境。

ESP32-C3

ESP32-C3 SoC 芯片支持以下功能:

  • 2.4 GHz Wi-Fi
  • 低功耗蓝牙
  • 高性能 32 位 RISC-V 单核处理器
  • 多种外设
  • 内置安全硬件

ESP32-C3 采用 40 nm 工艺制成,具有最佳的功耗性能、射频性能、稳定性、通用性和可靠性,适用于各种应用场景和不同功耗需求。

阅读全文 »

之前为了焊接一些小贴片模块,想过买一个加热台,后来一搜加热台,发现有很多卖PTC加热板的,就又想自己做一个加热台。正好这个月嘉立创又送了打样券,搞起来~

PCB加热台设计主要考虑以下几个方面:

  1. 面积
  2. 功率
  3. 铜厚
  4. 板厚
阅读全文 »
0%