在Clion使用CubeMX Stm32的步骤

Step1 准备软件,安装环境:
1. cubemx v6.5.0(可以兼容以前版本的project)

https://www.st.com.cn/zh/development-tools/stm32cubemx.html

STM32CubeMX 默认安装目录, 6.5版本可以兼容老版本
C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeMX
打开后选择help => 更新Firmware
里面的updater settings
reflash data
manage imbeded software packages 保留最新的一个

2. openocd
openocd-20231002.7z
https://gnutoolchains.com/arm-eabi/openocd/

解压缩到 D:\service\stm32\OpenOCD-20231002-0.12.0

3. arm-none-eabi
gcc-arm-none-eabi-5_4-2016q3-20160926-win32.zip
https://launchpad.net/gcc-arm-embedded/+download

解压缩到 D:\service\stm32\gcc-arm-none-eabi-5_4-2016q3-20160926-win32
 


4. Mingx64
ref: https://blog.csdn.net/m0_52559040/article/details/131603782

x86_64-13.2.0-release-posix-seh-ucrt-rt_v11-rev0.7z
https://github.com/niXman/mingw-builds-binaries/releases

- posix:这些压缩包适用于符合POSIX标准的操作系统,如Linux、UNIX等。
(我由于Linux和Windows经常切着用,所以选择posix,如果你只用Windows开发,那么选win32即可)

解压缩到 D:\service\stm32\mingw64

----------------------------------------------------------------------

Step2 环境变量:

搜索 view advanced system settings
打开 高级系统设置 =>环境变量
ARM_NONE_EABI_HOME  D:\service\stm32\arm-gnu-toolchain-13.2.Rel1-mingw-w64-i686-arm-none-eabi\arm-none-eabi
OpenOCD_HOME D:\service\stm32\OpenOCD-20231002-0.12.0
MINGW64_HOME D:\service\stm32\mingw64

path add the following:
%ARM_NONE_EABI_HOME%\bin
%OpenOCD_HOME%\bin
%MINGW64_HOME%\bin

----------------------------------------------------------------------

Step3:  验证
gcc -v
arm-none-eabi-gcc -v


----------------------------------------------------------------------

Step4 使用CubeMX创建工程

File 配置完成后

Project  => Generate Code  => Application Structure 选择Basic 不要选择Advanced

Toolchain/IDE =>SW4STM32(6.5以后的版本可能改成了Cmake)取消 generate under root

注意底下的Firmware Package Name and Version会是刚刚manage imbeded software packages保留的那个

Generate Code


新版本可能会要求登录后才能下载
 

---------------------------------------------------
Step5 用Clion打开项目,设定Clion的环境
在项目档案里右键 Open Folder as Clion Project

File =>Settings=>Build,Execution,Deployment=> Toolchains

Toolset: D:\service\stm32\mingw64
Build Tool: D:\service\stm32\mingw64\bin\mingw32-make.exe
C Compiler: D:\service\stm32\mingw64\bin\gcc.exe
C++ Compiler: D:\service\stm32\mingw64\bin\g++.exe
Debugger: D:\service\stm32\gcc-arm-none-eabi-5_4-2016q3-20160926-win32\bin\arm-none-eabi-gdb.exe


File =>Settings=>Build,Execution,Deployment=> Embedded Development
OpenOCD Location:D:\service\stm32\OpenOCD-20231002-0.12.0\bin\openocd.exe

Stm32CubeMax Location:

C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeMX\STM32CubeMX.exe


--------------------------------------------------------------------------------------------
Step6 在Clion里建立不会被覆盖的文件夹Core(之前的 Application Structure选择Basic)
在项目根目录建立Core文件夹,里面建立子文件夹CMakeFile,Config,Inc,Src
将根目录Src和Inc的档案移动到Core里

在根目录建立Middlewares,将FreeRTOS文件夹放入

将下面的CMakeLists.txt放入CMakeFile里,注意修改,其中.ld档案的路径会随着CubeMax的版本不同而改变

CMakelists.txt 范例

#THIS FILE IS AUTO GENERATED FROM THE TEMPLATE! DO NOT CHANGE!
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_VERSION 1)
cmake_minimum_required(VERSION 3.23)# 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_SOURCE_DIR,要另外立一个新的名字,PROJECT_ROOT_DIR
set(PROJECT_ROOT_DIR "D:/wks_freeRTOS/mininal_h743_stm32BK0510/mininal_h743_stm32")
set(PROJECT_BINARY_DIR "${PROJECT_ROOT_DIR}/cmake-build-debug")# project settings
project(mininal_h743_stm32 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=cortex-m7 -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 ()include_directories(# Driver${PROJECT_ROOT_DIR}/Drivers/STM32H7xx_HAL_Driver/Inc${PROJECT_ROOT_DIR}/Drivers/STM32H7xx_HAL_Driver/Inc/Legacy${PROJECT_ROOT_DIR}/Drivers/CMSIS/Device/ST/STM32H7xx/Include${PROJECT_ROOT_DIR}/Drivers/CMSIS/Include# Middlewares${PROJECT_ROOT_DIR}/Middlewares${PROJECT_ROOT_DIR}/Middlewares/FreeRTOS/Source/include${PROJECT_ROOT_DIR}/Middlewares/FreeRTOS/Source/portable/GCC/ARM_CM4F${PROJECT_ROOT_DIR}/Middlewares/canfestival/include${PROJECT_ROOT_DIR}/Middlewares/canfestival/src${PROJECT_ROOT_DIR}/Middlewares/canfestival/include/cm4${PROJECT_ROOT_DIR}/Middlewares/canfestival/include/win32${PROJECT_ROOT_DIR}/Middlewares/canfestival/include/AVR${PROJECT_ROOT_DIR}/Middlewares/canfestival/include/none${PROJECT_ROOT_DIR}/Middlewares/can-slave${PROJECT_ROOT_DIR}/Middlewares/delay# Config${PROJECT_ROOT_DIR}/Core/Config/${PROJECT_ROOT_DIR}/Core/Config/bsp${PROJECT_ROOT_DIR}/Core/Config/bsp/tim${PROJECT_ROOT_DIR}/Core/Config/bsp/usart${PROJECT_ROOT_DIR}/Core/Config/bsp/can${PROJECT_ROOT_DIR}/Core/Config/system# My Inc${PROJECT_ROOT_DIR}/Core/Inc${PROJECT_ROOT_DIR}/Core/Inc/bsp${PROJECT_ROOT_DIR}/Core/Inc/bsp/tim/common)add_definitions(-DUSE_HAL_DRIVER -DSTM32H743xx)file(GLOB_RECURSE SOURCES# driver"${PROJECT_ROOT_DIR}/startup/*.*""${PROJECT_ROOT_DIR}/Drivers/*.*"# Middlewares"${PROJECT_ROOT_DIR}/Middlewares/canfestival/*.*"
#        "${PROJECT_ROOT_DIR}/Middlewares/canfestival_original/*.*""${PROJECT_ROOT_DIR}/Middlewares/can-slave/*.*""${PROJECT_ROOT_DIR}/Middlewares/delay/*.*"# My Config"${PROJECT_ROOT_DIR}/Core/Config/*.*"# My Src"${PROJECT_ROOT_DIR}/Core/Inc/*.*""${PROJECT_ROOT_DIR}/Core/Src/*.*")#这里修改过
set(LINKER_SCRIPT ${PROJECT_ROOT_DIR}/STM32H743IITx_FLASH.ld)add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map)
add_link_options(-mcpu=cortex-m7 -mthumb -mthumb-interwork)
add_link_options(-T ${LINKER_SCRIPT})add_executable(${PROJECT_NAME}.elf${SOURCES}${LINKER_SCRIPT})#这里重定义过PROJECT_BINARY_DIR
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_BUILDCOMMAND ${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}")

--------------------------------------------------------------------------------------------

Step 7 Run

右上角 Edit Configuration
新建 OpenOCD Download & Run
Target: 项目名称
Executable binary: 项目名称
Debugger: arm-none-eabi-gdb.exe
Board config file: 点击Assist 选择最接近的,以h743为例,选择st_nucleo_h743zi.cfg
选择Copy to Project & Use 将文件拷贝到项目根目录,点击OK

连接板子,打开电源,Run

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis数据迁移-RedisShake

redis-shake是阿里云Redis团队开源的用于Redis数据迁移和数据过滤的工具。 一、基本功能 redis-shake它支持解析、恢复、备份、同步四个功能 恢复restore&#xff1a;将RDB文件恢复到目的redis数据库。 备份dump&#xff1a;将源redis的全量数据通过RDB文件备份起来。 解析deco…

CM311-5_系列通用_gk6323_安卓9_U盘卡刷短接强刷固件(带教程)

魔百和CM311-5_系列通用_gk6323V100C_安卓9_优盘卡刷短接强刷固件包&#xff08;带教程&#xff09;&#xff0c;可以解决开ADB刷机方法 进不去rec的问题。 CM311-5系列的盒子都能用&#xff0c;下面CM311-5 这个系列的强刷固件和教程分享给大家&#xff0c;进不去rec的兄弟们…

一分钟教你设置代理服务器的IP地址

许多人购买完代理IP却不会使用&#xff0c;我们来学习一下如何手把手地设置代理服务器的IP地址。无论是为了访问受限网站还是保护隐私&#xff0c;设置代理IP都是一个非常实用的技能。让我们一起来看看怎么做吧&#xff01; 设置代理服务器的IP地址步骤 1. 选择代理服务提供商…

《安全大模型技术与市场研究报告》发布,海云安榜上有名

近日&#xff0c;网络安全产业研究机构“数说安全”发布2024《安全大模型技术与市场研究报告》&#xff08;以下简称“报告”&#xff09;。 海云安凭借在开发安全领域的优秀业务能力以及在大模型相关技术研究方面的成就得到了认可&#xff0c;入选“安全开发大模型推荐供应商”…

高效使用 Guzzle:POST 请求与请求体参数的最佳实践

介绍 在现代爬虫技术中&#xff0c;高效发送 HTTP 请求并处理响应数据是关键步骤之一。Guzzle 是一个强大的 PHP HTTP 客户端&#xff0c;广泛应用于发送同步和异步请求。本文将介绍如何使用 Guzzle 发送 POST 请求&#xff0c;特别是如何传递请求体参数&#xff0c;并结合代理…

【Python】Python的安装与环境搭建

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️Python】 文章目录 前言Python下载环境配置测试环境变量是否配置成功配置环境变量 运行Python交互式解释器&#xff1a;命令行脚本集成开发环境&#xff08;IDE&#xff1a;Integrated Development E…

检测水管缺水的好帮手-管道光电液位传感器

管道光电液位传感器是现代清水管道管理中的重要技术创新&#xff0c;不仅提高了检测液位的精确度&#xff0c;还解决了传统机械式和电容式传感器存在的诸多问题&#xff0c;成为检测管道缺水的可靠利器。 该传感器采用先进的光学感应原理&#xff0c;利用红外光学组件通过精密…

【vite创建项目】

搭建vue3tsvitepinia框架 一、安装vite并创建项目1、用vite构建项目2、配置vite3、找不到模块 “path“ 或其相对应的类型声明。 二、安装element-plus1、安装element-plus2、引入框架 三、安装sass sass-loader1、安装sass 四、安装vue-router-next 路由1、安装vue-router42搭…

labview技巧——AMC框架安装

AMC工具包的核心概念是队列&#xff0c;队列是一种先进先出&#xff08;FIFO&#xff0c;First In First Out&#xff09;的数据结构&#xff0c;适用于处理并发和异步任务。在LabVIEW中&#xff0c;队列可以用于在不同VI之间传递数据&#xff0c;确保消息的有序处理&#xff0…

你觉得胡锡进还能回本吗?还能融资买纳指?

7月3日&#xff0c;胡锡进发布最新炒股日记&#xff1a;这几天的股票表现总体很差&#xff0c;除了今天&#xff0c;之前连续几天都输给了沪指&#xff0c;因此虽然今天我只赔了546元&#xff0c;但#胡锡进总亏损达到8.5万#。这是我今年一月份2800点以下时的亏损额。胡锡进称已…

如何快速选择短剧系统源码:高效构建您的在线短剧平台

在数字化时代&#xff0c;短剧作为一种新兴的娱乐形式&#xff0c;受到了广泛的欢迎。随着市场需求的增长&#xff0c;构建一个在线短剧平台成为了很多创业者和开发者的目标。而选择正确的短剧系统源码则是实现这一目标的关键步骤。本文将为您提供一些实用的指导&#xff0c;帮…

25届最近5年华北电力大学自动化考研院校分析

华北电力大学&#xff08;北京保定&#xff09; 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、初试大纲复试大纲 七、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指…

如何在 Selenium Python 中解决验证码 | 2024 完整指南

由于在进行网络自动化时遇到验证码是让许多人感到不知所措的问题。这些验证码专为区分人类用户和自动化脚本而设计&#xff0c;对于使用Selenium进行网络爬虫或自动化任务而言&#xff0c;无疑是一个巨大的挑战。2024年的完全指南将为您提供全面的解决方案&#xff0c;帮助您高…

ios-实验室暑假培训(1)

一 组队 在正式培训之前&#xff0c;也是数模比赛的众中之重。 一定要商讨好组队的相关事宜&#xff01;要求建模/编程/写作/写作三方能力交叉&#xff01; 而这三个当中&#xff0c;决定比赛拿奖上限的是编程手&#xff0c;决定比赛能不能拿奖的是写作手。而建模的更像是一个…

巴图自动化PN转Modbus RTU协议转换网关模块快速配置

工业领域中常用的通讯协议有&#xff1a;Profinet协议&#xff0c;Modbus协议&#xff0c;ModbusTCP协议&#xff0c;Profibus协议&#xff0c;Profibus DP协议&#xff0c;EtherCAT协议&#xff0c;EtherNET协议&#xff0c;CAN&#xff0c;CanOpen等&#xff0c;它们在自动化…

使用Scrapy进行网络爬取时的缓存策略与User-Agent管理

缓存策略的重要性 缓存策略在网络爬虫中扮演着至关重要的角色。合理利用缓存可以显著减少对目标网站的请求次数&#xff0c;降低服务器负担&#xff0c;同时提高数据抓取的效率。Scrapy提供了多种缓存机制&#xff0c;包括HTTP缓存和Scrapy内置的缓存系统。 HTTP缓存 HTTP缓…

ueditor集成秀米编辑器

ueditor集成秀米编辑器 一、背景二、集成秀米编辑器流程2.1、新增秀米插件的按钮&#xff0c;显示在我们的富文本编辑器上2.2、点击该按钮&#xff0c;可以呼出一个iframe&#xff0c;这个iframe引用的是秀米自己的编辑器页面2.3、要是有图片&#xff0c;需要再修改配置哈2.4、…

tkinter给按钮设置背景图片

tkinter给按钮设置背景图片 效果代码 效果 代码 import tkinter as tk from PIL import Image, ImageTk# 创建主窗口 root tk.Tk() root.title("按钮背景图片示例")# 加载图片 image Image.open("new.png") photo ImageTk.PhotoImage(image)# 创建按钮…

【代码随想录】【算法训练营】【第58天】 [卡码101]孤岛的总面积 [卡码102]沉没孤岛 [卡码103]水流问题 [卡码104]建造最大岛屿

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 58&#xff0c;周四&#xff0c;ding~ 题目详情 [卡码101] 孤岛的总面积 题目描述 卡码101 孤岛的总面积 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 C语言 […

【TS】TypeScript 中的 any 与 unknown:理解与实践

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 TypeScript 中的 any 与 unknown&#xff1a;理解与实践一、引言二、any&#x…