发帖
3 0 0

Ai-M61 实战头文件添加

沈夜
论坛元老

75

主题

188

回帖

8449

积分

论坛元老

积分
8449
Ai-M61系列 29 3 11 小时前

工程路径如下:

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2025-6-6     23:59                build
-a----        2023-12-30      1:51            224 CMakeLists.txt
-a----         2023-11-9     22:45            336 flash_prog_cfg.ini
-a----        2023-12-30      2:20           4928 main.c
-a----          2025-6-6     23:58            258 Makefile
-a----        2023-12-30      2:33          46076 OLED.c
-a----        2023-12-30      2:14           2704 OLED.h
-a----        2023-10-31     14:19          16114 OLED_Data.c
-a----        2023-10-31     14:19            796 OLED_Data.h
-a----         2023-11-9     22:45             18 proj.conf

以下是这些文件和目录的详细说明,按功能分类整理:


1. 核心代码文件

文件名 作用
main.c 程序主入口文件,包含 main() 函数,初始化硬件并控制主流程。
OLED.c OLED 屏幕的驱动实现,包含初始化、绘图、显示等底层函数。
OLED.h OLED 驱动的头文件,声明函数、宏和数据结构。
OLED_Data.c 存储 OLED 显示所需的静态数据(如字体、图标等二进制数据)。
OLED_Data.h 声明 OLED_Data.c 中的常量或变量,供其他文件调用。

2. 构建系统文件

文件名 作用
CMakeLists.txt CMake 构建脚本,定义项目名称、源文件、依赖库等(你之前分析的配置文件)。
Makefile 传统 Make 构建脚本(可能与 CMake 共存,用于兼容性或简化命令)。
build/ 目录 CMake/Make 生成的临时文件(如编译中间文件、可执行文件)的存放目录。

3. 烧录与配置

文件名 作用
flash_prog_cfg.ini 烧录器配置文件,定义芯片型号、Flash 地址、波特率等(用于 blflash 等工具)。
proj.conf 项目配置文件,可能包含 Wi-Fi 密码、硬件引脚定义等(被 CMakeLists.txt 引用)。

文件关系图

main.c
  ├─ 调用 OLED.h 中的函数
  └─ 使用 OLED_Data.h 中的数据
OLED.c ── 实现 OLED.h 的功能
OLED_Data.c ── 提供数据给 OLED.c 使用

进阶实现 架构合理化

新的目录

----                 -------------         ------ ----
d-----          2025-6-7      0:28                build
d-----          2025-6-7      0:09                inc
d-----          2025-6-7      0:17                src
-a----          2025-6-7      0:28           1030 CMakeLists.txt
-a----         2023-11-9     22:45            336 flash_prog_cfg.ini
-a----          2025-6-7      0:20            256 Makefile
-a----         2023-11-9     22:45             18 proj.conf

标准目录结构说明

项目根目录/
│
├── inc/               # 头文件目录
│   ├── oled.h         # OLED 驱动头文件
│   └── oled_data.h    # 显示数据头文件
│
├── src/               # 源文件目录
│   ├── oled.c         # OLED 驱动实现
│   └── OLED_Data.c    # 显示数据实现
│
├── build/             # 构建输出目录(自动生成)
├── main.c             # 主程序入口
├── CMakeLists.txt     # 构建配置文件
├── Makefile          # 辅助 Makefile
├── proj.conf         # 项目配置
└── flash_prog_cfg.ini # 烧录配置

关键调整说明

  1. 源文件组织
  • 所有实现文件(.c)集中在 src 目录
  • 头文件(.h)集中在 inc 目录

这样的结构清晰分离了头文件和实现,便于维护和扩展,也符合大多数嵌入式项目的标准实践。


CMakeLists.txt

cmake_minimum_required(VERSION 3.15)

# 包含项目配置文件 proj.conf(可能包含项目特定的设置或变量)
include(proj.conf)

# 查找并加载 Bouffalo Lab SDK(必须存在,否则构建失败)
# 搜索路径参考环境变量 BL_SDK_BASE 指定的目录
find_package(bouffalo_sdk REQUIRED HINTS $ENV{BL_SDK_BASE})

# 向名为 "app" 的目标添加私有源文件:
# - src/oled.c        OLED 驱动实现文件
# - src/OLED_Data.c   OLED 显示数据文件
target_sources(app PRIVATE 
    src/oled.c 
    src/OLED_Data.c
)

# 添加头文件搜索路径:
# - ./inc 目录(存放 OLED 相关的头文件,如 oled.h)
sdk_add_include_directories(./inc)

# 指定主程序入口文件为 main.c(包含 main() 函数)
sdk_set_main_file(src/main.c)

# 定义项目名称为 "i2c_oled"(基于 I2C 的 OLED 显示项目)
project(i2c_oled)

# 设置 VS Code 的c_cpp_properties.json 配置文件自动生成
sdk_set_vscode_dir(.)

还需要修改的地方

  • flash_prog_cfg.ini
[cfg]
# 0: no erase, 1:programmed section erase, 2: chip erase
erase = 1
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
skip_mode = 0x0, 0x0
# 0: not use isp mode, #1: isp mode
boot2_isp_mode = 0

[FW]
filedir = ./build/build_out/i2c*_$(CHIPNAME).bin
address = 0x000000

filedir需要和CMakeLists.txt的项目名称一致

  • 例如 filedir = ./build/build_out/i2c_oled*_$(CHIPNAME).bin
  • 这样 一个项目的 配置就搞好了。
──── 0人觉得很赞 ────

使用道具 举报

学习
1 小时前
优秀
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28907 个
  • 话题数: 41477 篇