在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.rhkb.cn/news/367481.html

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

相关文章

SpringMVC常见的注解

一、Spring MVC Spring Web MVC是基于ServletAPI构建的原始web 框架&#xff0c;一开始就包含在Spring 框架中&#xff0c;通常被称为“Spring MVC”。 1.MVC 是什么&#xff1f; MVC(Model、View、Controller&#xff09;是软件工程中的一种软件架构设计模型。它把软件系统分…

Vision Transformer论文阅读笔记

目录 An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale -- Vision Transformer摘要Introduction—简介RELATED WORK—相关工作METHOD—方法VISION TRANSFORMER (VIT)—视觉Transformer(ViT) 分析与评估PRE-TRAINING DATA REQUIREMENTS—预训练数据…

战略流程-麦肯锡企业数字化业务变革成熟度评估模型及案例深度解析

一、企业变革成熟度评估模型 企业变革成熟度诊断模型是一种评估工具&#xff0c;用于全面扫描和评估企业在变革转型过程中的能力水平。该模型通过一系列量化指标和定性分析&#xff0c;对企业在不同变革领域的成熟度进行评分&#xff0c;从而帮助企业识别在变革过程中的优势和…

llm学习-3(向量数据库的使用)

1&#xff1a;数据读取和加载 接着上面的常规操作 加载环境变量---》获取所有路径---》加载文档---》切分文档 代码如下&#xff1a; import os from dotenv import load_dotenv, find_dotenvload_dotenv(find_dotenv()) # 获取folder_path下所有文件路径&#xff0c;储存在…

mysql数据库自动备份

crond cron 实现定时执行 安装 yum install crond启动 service crond start查看状态 service crond status执行 crontab xx.cron查看任务列表 crontab -l删除所有任务 crontab -r 示例&#xff1a;每分钟写入 Good morning 到 mine.cron [rootecs-f1dd-0001 fztmp]# echo ‘* …

什么是 API 代理?

API 代理就像是您的计算机和互联网上特殊服务之间的中间人。它有点像集翻译、保安和信使于一体。 什么是 API 代理&#xff1f; API 代理就像是您和在线服务之间的中间人。当您的计算机需要从某个特殊的在线服务 (API) 获得某些东西时&#xff0c;API 代理会确保一切顺利进行…

使用 llamaIndex 快速实现智能体

AI 智能体就是可以根据当前环境进行推理&#xff0c;并根据处理结果进行下一步的操作。简单来说 AI 智能体可以与外界环境进行交互&#xff0c;并根据结果执行更复杂的操作。本文将通过llamaIndex 实现一个简单的 Agent 实时获取数据&#xff0c;由于大模型是通过静态数据进行训…

BAS(入侵与攻击模拟)正在替代红队测试?

之前经常会被用户问到&#xff0c;漏扫、渗透和红队红的区别是啥&#xff1f; 传统的漏扫、渗透和红蓝对抗&#xff0c;可以看到工具化的漏洞不可靠&#xff0c;人工的成本就高。怎么找到一个漏洞可信度又高&#xff0c;成本又低的&#xff0c;就诞生了BAS。 抛开漏扫&#xf…

CTO透露GPT-5内幕,OpenAI 以36亿美元收购数据库初创公司

目录 01 GPT-5 02 OpenAI收购Rockset 2.1 谁是Rockset&#xff1f; 2.2 OpenAI的目的是什么&#xff1f; 01 GPT-5 虽然GPT-4的视频通话功能尚未全面推广&#xff0c;但OpenAI的CTO已经对即将到来的GPT-5给出了新的暗示。 不久前&#xff0c;Mira回到母校达特茅斯工程学…

数据结构——跳表Skip List

本文对跳表的定义、实现、应用等进行简单总结。 一、 介绍 1.定义 跳表&#xff08;Skip List&#xff09;&#xff1a;是一种概率性数据结构&#xff0c;由William Pugh在1990年提出&#xff0c;主要用于在有序的元素集合上进行快速的搜索、插入和删除操作。跳表的效率与平衡…

MyBatis3(动态SQL 常用的动态SQL 元素 映射器注解 基本注解 结果映射注解)

目录 一、动态SQL 常用的动态SQL 元素 二、if元素 三、choose 、when 、otherwise 元素 四、trim 、where 、set 元素 trim&#xff08;不常用&#xff09; where set 五、foreach 元素 六、bind 元素 #{} ${} 区别 示例完整代码 七、映射器注解 八、基本注解 …

远程登录WINDOWS10,提示你的凭据不工作

1&#xff1a;想通过远程桌面登录WINDOWS10输入用户名和密码后&#xff0c;出现下面的提示。 2&#xff1a;登录WINDOWS10&#xff0c;在运行中输入gpedit.msc 3&#xff1a;本地组策略编辑器窗口中&#xff0c;依次展开&#xff0c;计算机配置 ---> 管理模版---> 系统--…

【LLM 论文】Self-Refine:使用 feedback 迭代修正 LLM 的 output

论文&#xff1a;Self-Refine: Iterative Refinement with Self-Feedback ⭐⭐⭐⭐ CMU, NeurIPS 2023, arXiv:2303.17651 Code: https://selfrefine.info/ 论文速读 本文提出了 Self-Refine 的 prompt 策略&#xff0c;可以在无需额外训练的情况下&#xff0c;在下游任务上产…

DMA学习笔记

参考文章 https://blog.csdn.net/as480133937/article/details/104927922 DMA简介 DMA&#xff0c;全称Direct Memory Access&#xff0c;即直接存储器访问。DMAC 即 DMA 控制器&#xff0c;提供了一种硬件的数据传输方式&#xff0c;无需 CPU 的介入&#xff0c;可以处理外…

【LeetCode】九、双指针算法:环形链表检测 + 救生艇

文章目录 1、双指针算法1.1 对撞双指针1.2 快慢双指针 2、leetcode141&#xff1a;环形链表3、leetcode881&#xff1a;救生艇 1、双指针算法 用两个指针来共同解决一个问题&#xff1a; 1.1 对撞双指针 比如先有一个有序的数组array int[] array {1, 4, 5, 7, 9}先要找两个…

小程序-<web-view>嵌套H5页面支付功能

背景&#xff1a;小程序未发布前&#xff0c;公司使用vue框架搭建了管理系统&#xff0c;为了减少开发成本&#xff0c;微信提供了web-view来帮助已有系统能在小程序上发布&#xff0c;详见web-view | 微信开放文档。因公司一直未打通嵌套H5小程序的支付功能&#xff0c;导致用…

3D模型如何在力控组态中打开?---模大狮模型网

在展览3D模型设计行业中&#xff0c;力控组态是一个关键的技术应用。通过适当的力控组态&#xff0c;可以实现模型的互动性和真实感&#xff0c;提升展览效果和用户体验。本文将探讨如何在力控组态中打开和应用3D模型&#xff0c;从而达到更加生动和引人入胜的展示效果。 一、了…

WPF/C#:BusinessLayerValidation

BusinessLayerValidation介绍 BusinessLayerValidation&#xff0c;即业务层验证&#xff0c;是指在软件应用程序的业务逻辑层&#xff08;Business Layer&#xff09;中执行的验证过程。业务逻辑层是应用程序架构中的一个关键部分&#xff0c;负责处理与业务规则和逻辑相关的…

MySql Innodb 索引有哪些与详解

概述 对于MYSQL的INNODB存储引擎的索引&#xff0c;大家是不陌生的&#xff0c;都能想到是 B树结构&#xff0c;可以加速SQL查询。但对于B树索引&#xff0c;它到底“长”得什么样子&#xff0c;它具体如何由一个个字节构成的&#xff0c;这些的基础知识鲜有人深究。本篇文章从…

俄罗斯ozon运费计算工具,跨境电商ozon物流运费计算工具

OZON平台服装类目卖家而言&#xff0c;如何快速、准确地为产品定价&#xff0c;并有效管理运费成本&#xff0c;直接关系到市场竞争力与利润空间。接下来我们看看俄罗斯ozon运费计算工具&#xff0c;跨境电商ozon物流运费计算工具。 萌啦Ozon定价工具&#xff1a;智能模拟&…