现代化嵌入式AI编程-IDEA指南

[IDEA]现代化嵌入式AI编程-Clion指南

前情

【安装与更新】IDE安装链接:https://www.jetbrains.com/zh-cn/toolbox-app/

【兼容性】安装或更新CLion(IDEA家用于C/C++的编程平台,可以兼容平替CUBEIDE工程,Keil工程的IDE内编译调试还需自己适配)

【版本安装建议】建议版本安装26年,因为有部分AI插件在25年版本后才能搜索到,并且根据安富莱论坛来说26年版本兼容VScode的工程了

【环境搭建】对于环境的安装可以参考我早年的博客:https://blog.csdn.net/2303_81879249/article/details/138239156?spm=1001.2014.3001.5502

【破解】最后破解:可以找淘宝解决,最省时间

【系统兼容】和IDEA家其他产品一样,支持liunx、windows、macos。

破解与插件

up自己购买获得的链接

windows破解:https://xcntyqfow9pt.feishu.cn/wiki/DLvGwZAnriPP8rkK33CciKIfnxd

插件推荐

IDEA家的AI(需要魔法和美元)
国内较好用的AI(免费)

不仅仅是多了一个浏览器一样的对话框、而是嵌入进了idea里面,可以直接帮你管理git仓库、添加合并代码,自己查看工程源文件和md文件,还有自动联想补全代码和注释

翻译软件

直接使用AI翻译也可以

或者专门的插件

STM32-CUBEIDE工程

直接打开就兼容,idea官方主力推荐,支持gcc、g++编译、内存调试、步进调试、link下载代码

看up链接:https://blog.csdn.net/2303_81879249/article/details/138239156?spm=1001.2014.3001.5502

复制代码
# 此文件从模板自动生成! 请勿更改!
# 设置 CMake 目标系统名称为 Generic(通用),用于嵌入式开发
set(CMAKE_SYSTEM_NAME Generic)

# 设置 CMake 目标系统版本
set(CMAKE_SYSTEM_VERSION 1)

# 指定 CMake 需要的最低版本
cmake_minimum_required(VERSION 3.25)

# ============================== 交叉编译器配置 ============================== #
# 指定 C 语言编译器
set(CMAKE_C_COMPILER arm-none-eabi-gcc)

# 指定 C++ 语言编译器
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)

# 指定汇编编译器
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)

# 指定静态库打包工具
set(CMAKE_AR arm-none-eabi-ar)

# 指定目标文件转换工具(将 ELF 转换为 HEX 或 BIN)
set(CMAKE_OBJCOPY arm-none-eabi-objcopy)

# 指定目标文件反汇编工具
set(CMAKE_OBJDUMP arm-none-eabi-objdump)

# 指定大小计算工具
set(SIZE arm-none-eabi-size)

# 设定 CMake 交叉编译的目标类型为静态库
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

# ============================== 项目配置 ============================== #
# 设置项目名称,并支持 C、C++ 和汇编(ASM)语言
project(ADC+DAC C CXX ASM)

# 设置 C++ 标准为 C++17
set(CMAKE_CXX_STANDARD 17)

# 设置 C 标准为 C11
set(CMAKE_C_STANDARD 11)

# ============================== 浮点运算支持(可选) ============================== #
# 如果 MCU 具有 FPU(浮点运算单元),可启用硬件浮点支持(使用 `hard`)
# 也可以使用 `soft` 选项以软件方式模拟浮点运算

# 硬件浮点(取消注释可启用)
# add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING)
# add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)
# add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)

# 软件浮点(取消注释可启用)
# add_compile_options(-mfloat-abi=soft)

# ============================== 编译选项 ============================== #
# 指定 CPU 架构(这里是 Cortex-M4)
add_compile_options(-mcpu=cortex-m4 -mthumb -mthumb-interwork)

# 优化代码以减少代码大小,提高性能
add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0)

# 解决 C++17 中的绝对地址警告
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-register")

# 允许汇编文件预处理
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-x$<SEMICOLON>assembler-with-cpp>)

# ============================== 编译优化等级 ============================== #
# 根据不同的构建类型(Release/Debug)设置优化等级
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
    message(STATUS "Maximum optimization for speed")
    add_compile_options(-Ofast)
elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo")
    message(STATUS "Maximum optimization for speed, debug info included")
    add_compile_options(-Ofast -g)
elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel")
    message(STATUS "Maximum optimization for size")
    add_compile_options(-Os)
else ()
    message(STATUS "Minimal optimization, debug info included")
    add_compile_options(-Og -g)
endif ()

# ============================== 头文件路径 ============================== #
# 指定项目所需的头文件目录
include_directories(
    Core/Inc
    Drivers/STM32F4xx_HAL_Driver/Inc
    Drivers/STM32F4xx_HAL_Driver/Inc/Legacy
    Drivers/CMSIS/Device/ST/STM32F4xx/Include
    Drivers/CMSIS/Include
)

# ============================== 预定义宏 ============================== #
# 这些宏定义通常由 HAL 库需要
add_definitions(-DDEBUG -DUSE_HAL_DRIVER -DSTM32F407xx)

# ============================== 源文件路径 ============================== #
# 递归查找并包含 `Library`、`Core` 和 `Drivers` 目录下的所有源文件
file(GLOB_RECURSE SOURCES "Library/*.*" "Core/*.*" "Drivers/*.*")

# ============================== 链接器脚本 ============================== #
# 指定链接脚本文件(用于控制 STM32F407ZGTX 的内存映射)
set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32F407ZGTX_FLASH.ld)

# ============================== 链接选项 ============================== #
# 启用垃圾回收(移除未使用的代码),输出内存使用情况,并生成 `.map` 文件
add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map)

# 指定 CPU 架构(与编译器选项一致)
add_link_options(-mcpu=cortex-m4 -mthumb -mthumb-interwork)

# 指定使用的链接脚本
add_link_options(-T ${LINKER_SCRIPT})

# ============================== 生成可执行文件 ============================== #
# 生成可执行文件(.elf 文件),包含所有源文件和链接脚本
add_executable(${PROJECT_NAME}.elf ${SOURCES} ${LINKER_SCRIPT})

# ============================== 生成 HEX 和 BIN 文件 ============================== #
# 生成的 HEX 和 BIN 文件的存储路径
set(HEX_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.hex)
set(BIN_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.bin)

# ============================== 浮点支持选项 ============================== #
# 启用 `nano.specs` 以节省 Flash,并支持 printf/scanf 浮点输出
set(COMMON_FLAGS "-specs=nosys.specs -specs=nano.specs -u _printf_float -u _scanf_float")

# 添加链接选项以节省 Flash
add_link_options(-specs=nano.specs)

# 设置链接器标志,启用 nano.specs
#set(CMAKE_EXE_LINKER_FLAGS "-specs=nano.specs -specs=nosys.specs")

# 使用标准 C 库
set(CMAKE_C_STANDARD_LIBRARIES "-lc")

# ============================== 生成 HEX 和 BIN 文件 ============================== #
# 在 ELF 文件构建完成后,自动转换为 HEX 和 BIN 文件
add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD
        COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${PROJECT_NAME}.elf> ${HEX_FILE}
        COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${PROJECT_NAME}.elf> ${BIN_FILE}
        COMMENT "Building ${HEX_FILE}
Building ${BIN_FILE}")

还有stlink下载的cfg文件(他们官方有挺多的),DAPlink的忘记放哪儿了

复制代码
# SPDX-License-Identifier: GPL-2.0-or-later

# This is an STM32F4 discovery board with a single STM32F407VGT6 chip.
# http://www.st.com/internet/evalboard/product/252419.jsp

source [find interface/stlink.cfg]

transport select hla_swd

# increase working area to 64KB
set WORKAREASIZE 0x10000

source [find target/stm32f4x.cfg]

reset_config none

STM32-Keil工程

理论上可以做到和CUBEIDE工程一致,但是up还没搞明白idea官方写的适配的cmake

复制代码
# 此文件从模板自动生成! 请勿更改!
# 该文件用于配置 STM32 工程的 CMake 构建系统

# 指定目标系统类型(嵌入式裸机系统)
set(CMAKE_SYSTEM_NAME Generic)

# 系统版本(仅标识用途)
set(CMAKE_SYSTEM_VERSION 1)

# 要求的最低 CMake 版本
cmake_minimum_required(VERSION 3.25)

# ==============================
# 交叉编译工具链配置
# ==============================

# 指定 C 编译器
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
# 指定 C++ 编译器
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
# 指定汇编编译器
set(CMAKE_ASM_COMPILER  arm-none-eabi-gcc)
# 静态库归档工具
set(CMAKE_AR arm-none-eabi-ar)
# ELF 转 HEX/BIN 工具
set(CMAKE_OBJCOPY arm-none-eabi-objcopy)
# ELF 反汇编工具
set(CMAKE_OBJDUMP arm-none-eabi-objdump)
# 查看程序大小工具
set(SIZE arm-none-eabi-size)
# 防止 CMake 在配置阶段尝试运行目标程序
# 因为嵌入式程序无法在主机运行
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

# ==============================
# 工程基本信息
# ==============================

# 定义工程名称和支持语言
project(H5_RTOS_Demo C CXX ASM)

# C++ 标准
set(CMAKE_CXX_STANDARD 17)
# C 标准
set(CMAKE_C_STANDARD 11)

# ==============================
# 浮点运算配置
# ==============================
# 如果 MCU 使用硬件浮点单元,可以启用下面配置
add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING)
add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)
add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)

# 如果使用软件浮点运算
#add_compile_options(-mfloat-abi=soft)

# ==============================
# 处理器架构配置
# ==============================

# 指定 CPU 架构
add_compile_options(
        -mcpu=cortex-m4
        -mthumb
        -mthumb-interwork
        )
add_compile_options(
        -ffunction-sections
        -fdata-sections -fno-common
        -fmessage-length=0
        )

# 如果 C++17 出现绝对地址警告可以启用
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-register")


# ==============================
# 允许 ASM 文件使用 C 预处理
# ==============================

add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-x$<SEMICOLON>assembler-with-cpp>)


# ==============================
# 编译优化等级配置
# ==============================
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
    message(STATUS "Maximum optimization for speed")
    add_compile_options(-Ofast)# 最高性能优化
elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo")
    message(STATUS "Maximum optimization for speed, debug info included")
    add_compile_options(-Ofast -g) # 高优化 + 调试信息
elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel")
    message(STATUS "Maximum optimization for size")
    add_compile_options(-Os)# 最小代码体积
else ()
    message(STATUS "Minimal optimization, debug info included")
    add_compile_options(-Og -g)# 调试模式
endif ()

# ==============================
# 头文件搜索路径
# ==============================
include_directories(
        #HAL框架库
        Core/Inc
        Drivers/STM32H5xx_HAL_Driver/Inc
        Drivers/STM32H5xx_HAL_Driver/Inc/Legacy
        Drivers/CMSIS/Device/ST/STM32H5xx/Include
        Drivers/CMSIS/Include

        #FreeRTOS库
        Middlewares/Third_Party/FreeRTOS/Source/include/
        Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM33_NTZ/non_secure/
        Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/
        Middlewares/Third_Party/CMSIS/RTOS2/Include/
        Middlewares/ST/ARM/DSP/Inc

        #工程内部库
        BSP

)
# ==============================
# 宏定义
# ==============================
add_definitions(-DDEBUG -DUSE_HAL_DRIVER -DSTM32H563xx)

# ==============================
# 自动搜索源文件
# ==============================
# 递归搜索 Core / Drivers / Middlewares 所有源码
file(GLOB_RECURSE SOURCES
        "Core/*.*"
        "Middlewares/*.*"
        "Drivers/*.*"
        "BSP/*.*"

        )
# ==============================
# 链接脚本
# ==============================

# 指定 MCU Flash / RAM 分布
set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32H563RITX_FLASH.ld )
# ==============================
# 链接参数
# ==============================
add_link_options(
        -Wl,-gc-sections,# 移除未使用代码
        --print-memory-usage,# 输出内存使用情况
        -Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map# 生成 map 文件
        )
# 指定 CPU 架构
add_link_options(
        -mcpu=cortex-m4
        -mthumb
        -mthumb-interwork
)

# 指定链接脚本
add_link_options(-T ${LINKER_SCRIPT})

# ==============================
# 生成 ELF 可执行文件
# ==============================

# ==============================
# 生成 HEX / BIN 文件
# ==============================
set(HEX_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.hex)
set(BIN_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.bin)

ESP32工程

兼容,但是up没折腾

图形化git代码管理

创建或拉取仓库

登录

正常直接使用地址+令牌登录

或者图形化

push、合并等

代码编辑服务

配置好cmake,就可以有代码补全和函数追踪了

代码补全是自动的,会关联你写的函数以及传参,并给出警告等

函数追踪是鼠标中键,直接跳转。还有函数参数标签。

转存中...(img-8nHyuTVX-1776050294323)]

外链图片转存中...(img-3B8rgFG5-1776050294323)

登录

正常直接使用地址+令牌登录

或者图形化

外链图片转存中...(img-wxYxVNj1-1776050294323)

push、合并等

外链图片转存中...(img-UbZJAlYc-1776050294324)

代码编辑服务

配置好cmake,就可以有代码补全和函数追踪了

代码补全是自动的,会关联你写的函数以及传参,并给出警告等

函数追踪是鼠标中键,直接跳转。还有函数参数标签。

外链图片转存中...(img-ojlUadOY-1776050294324)

外链图片转存中...(img-gOP6x1GR-1776050294324)

外链图片转存中...(img-wNleKEGo-1776050294324)

相关推荐
Java面试题总结4 小时前
2026年Java面试题最新整理,附白话答案
java·开发语言·jvm·笔记·spring·intellij-idea
芒果披萨4 小时前
日志管理 logging
java·开发语言·c++
高冷的上官梓芸4 小时前
【A15】默认关闭屏保
java
爱学习的小囧4 小时前
嵌套式 ESXi 8.x/9.0 虚拟设备下载与实战指南
java·linux·运维·服务器·虚拟化
飞哥数智坊4 小时前
Gemini-3.1-Pro vs Gemini-3-Flash:效果与花费的真实对比
人工智能·ai编程·gemini
五阿哥永琪4 小时前
从零读懂 Java 函数式接口:Function、Consumer、Supplier、Predicate
java·开发语言
533_4 小时前
[vxe-table] 表头:点击出现输入框
android·java·javascript
天若有情6734 小时前
颠覆C++传统玩法!Property属性与伪类,开辟静态语言新维度
java·c++·servlet
硅基导游5 小时前
linux系统与进程内存使用情况探测
java·linux·运维