关于如何配置Clion和cubemax烧录stm32代码 Clion需要提前配置好Minw编译器
软件环境:
Windows 10
STM32CubeMX
Clion-2024
MinGW
OpenOCD
arm-none-eabi-gcc
硬件环境:
arm-none-eabi-gcc Windows到这里下载:https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads ,选择ZIP压缩包形式的
下载好openOCD和arm-none-eabi-gcc后配置工具链如下,注意debug不要修改,否则无法断点调试
记得新建环境以防影响日常c++开发
同时设置openocd和cubemax
在完成设置后新建项目生成网上都有相关教程
这里我提供在cubemax生成项目后回到Clion中不自动识别出现debug的问题的解决方法
在工程项目的根目录添加以下三个文件
st_link.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # choose st-link/j-link/dap-link etc. #ST-Link source [find interface/stlink.cfg] transport select hla_swd #DAP-Link #adapter driver cmsis-dap #transport select swd #这里的stm32f1x.cfg对应的是你的板子的相应芯片型号 source [find target/stm32f1x.cfg] # download speed = 10MHz adapter speed 10000
dap_link.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # choose st-link/j-link/dap-link etc. #ST-Link #source [find interface/stlink.cfg] #transport select hla_swd #DAP-Link adapter driver cmsis-dap transport select swd #这里的stm32f1x.cfg对应的是你的板子的相应芯片型号 source [find target/stm32f1x.cfg] # download speed = 10MHz adapter speed 10000
CMakeLists_template.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 #${templateWarning} set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_VERSION 1) ${cmakeRequiredVersion} # specify cross-compilers and tools set(CMAKE_C_COMPILER arm-none-eabi-gcc) set(CMAKE_CXX_COMPILER arm-none-eabi-g++) set(CMAKE_ASM_COMPILER arm-none-eabi-gcc) set(CMAKE_AR arm-none-eabi-ar) set(CMAKE_OBJCOPY arm-none-eabi-objcopy) set(CMAKE_OBJDUMP arm-none-eabi-objdump) set(SIZE arm-none-eabi-size) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) # project settings project(${projectName} C CXX ASM) set(CMAKE_CXX_STANDARD 17) set(CMAKE_C_STANDARD 11) #Uncomment for hardware floating point #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) #Uncomment for software floating point #add_compile_options(-mfloat-abi=soft) add_compile_options(-mcpu=${mcpu} -mthumb -mthumb-interwork) add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0) # uncomment to mitigate c++17 absolute addresses warnings #set(CMAKE_CXX_FLAGS "$${CMAKE_CXX_FLAGS} -Wno-register") # Enable assembler files preprocessing 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 () function(recursion_include path) if(IS_DIRECTORY ${path}) message("[Include] " ${path}) include_directories(${path}) endif() file(GLOB ALL_SUB RELATIVE ${path} ${path}/*) foreach(sub ${ALL_SUB}) if(IS_DIRECTORY ${path}/${sub}) recursion_include(${path}/${sub}) endif() endforeach() endfunction() include_directories(${includes}) add_definitions(${defines}) # 自定义的c文件和头文件编译路径添加处 file(GLOB_RECURSE SOURCES ${sources} "BSP/*.*" "APP/*.*" "Components/*.*" "HARDWARE/*.*") recursion_include(${CMAKE_SOURCE_DIR}/BSP) recursion_include(${CMAKE_SOURCE_DIR}/APP) recursion_include(${CMAKE_SOURCE_DIR}/HARDWARE) recursion_include(${CMAKE_SOURCE_DIR}/Components) set(LINKER_SCRIPT $${CMAKE_SOURCE_DIR}/${linkerScript}) add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=$${PROJECT_BINARY_DIR}/$${PROJECT_NAME}.map) add_link_options(-mcpu=${mcpu} -mthumb -mthumb-interwork) add_link_options(-T $${LINKER_SCRIPT}) add_executable($${PROJECT_NAME}.elf $${SOURCES} $${LINKER_SCRIPT}) set(HEX_FILE $${PROJECT_BINARY_DIR}/$${PROJECT_NAME}.hex) set(BIN_FILE $${PROJECT_BINARY_DIR}/$${PROJECT_NAME}.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}")
可以新建这三个文件然后完整复制内容过去再将文件内容移入到项目根目录即可
具体方法可参考b站up:优雅的嵌入式开发——用CLion开发stm32之新建工程_哔哩哔哩_bilibili