使用STM32CubeMX和STM32CubeIDE的常见问题和注意事项

2023-11-13

STM32CubeMX和STM32CubeIDE是ST公司的STM32Cube生态系统中最重要和最常用的2个软件,使用这2个免费软件可以高效地进行STM32系统的开发。

CubeMX用于对一个STM32器件进行可视化的配置,然后生成CubeIDE或其他IDE项目的初始化代码。CubeIDE可以在CubeMX初始生成的代码基础上进一步添加用户功能代码,实现具体的功能。

新手在使用CubeMX和CubeIDE的过程中,容易范一些错误,或遇到一些问题不知如何解决。本文将这些常见问题整理如下。

(1)安装了错误版本的Java Runtime Environment(JRE),导致生成的CubeIDE项目无法编译

在安装CubeMX和CubeIDE的时候,如果电脑上没有安装JRE,会提示要求安装JRE。现在的Win7或Win10一般是64位的系统,但有的同学在安装JRE时却误装了32位的JRE。安装了32位的JRE后,可以继续安装CubeMX和CubeIDE,但是CubeMX生成的CubeIDE项目在CubeIDE里打开后不能编译,因为生成的项目不完整。

所以,64位的Win7或Win10上,一定要安装64位的JRE。

(2)CubeMX的Repository文件夹使用了默认的路径,导致生成的CubeIDE项目无法编译

有的同学在安装CubeMX后,就立刻安装固件库,而没有打开Update Settings对话框,修改Repository Folder(固件库文件夹),使用了默认的固件库目录。CubeMX安装后,默认的Repository Folder是C盘用户目录下的一个文件夹(与登录Windows的用户名称有关),即“C:\User\*****”。

CubeMX对中文的支持不是很好,在Windows系统上,Repository文件夹不能有任何汉字、空格等符号。而CubeMX安装后默认的Repository文件夹就是有汉字的,即使登录Windows的用户名称是纯英文。如果使用了默认的Repository路径,CubeMX生成的CubeIDE项目不完整,无法正常编译。

所以,在安装固件库之前,要先打开Update Settings对话框,修改Repository文件夹,如下图,设置一个单独的文件夹,且整个路径上不能有汉字、空格等特殊符号。

如果已经使用默认的Repository目录安装了固件库,那么Repository目录不能再修改,只能卸载掉固件库,卸载CubeMX后重新安装和设置。

(3)CubeMX文件名称需要与最后一级文件夹名称同名,且路径上不能有汉字或空格,否则生成代码不完整,CubeIDE项目无法编译

一个CubeMX项目只有一个.ioc文件,这个文件名必须与最后一级文件夹的名称相同。例如CubeMX项目保存到下面的目录下

D:\CubeDemo\Part2_Peripherals\Chap08TFTLCD\Demo8_1TFTLCD\

则CubeMX的文件名称必须是 Demo8_1TFTLCD.ioc。在CubeMX里首次保存项目时,就是选择路径,会自动以最后一级文件夹名称命名ioc文件。

注意,保存CubeMX项目文件的整个路径名称上不能有汉字、空格等特殊字符,只能使用英文、数字、下划线等基本字符。否则生成的CubeIDE项目无法正常编译。

(4)CubeMX里先生成了EWARM项目的代码,发现错了,再选择生成CubeIDE项目代码,生成的CubeIDE项目无法编译

在CubeMX里如果没有设置IDE类型,就直接生产代码,这样生成的是EWARM项目,因为默认的IDE选项是EWARM(如下图)。如果发现错了,重新选择STM32CubeIDE再生成一次代码,这样的项目在CubeIDE里打开后是无法编译的。

这种情况下的解决办法是,删除项目目录下除了ioc文件之外的所有其他文件和文件夹,然后在CubeMX里重新生成CubeIDE类型的项目代码即可。

(5)未升级ST-LINK仿真器的固件,导致CubeIDE项目编译后无法下载到开发板

初次使用CubeIDE编译项目,并使用ST-LINK仿真器下载到开发板时,可能会出现提示对话框,说仿真器固件版本低,需要升级固件。有同学不注意看提示信息,不知道升级固件。

出现这种情况时,点击CubeIDE的主菜单项 Help 下面的ST-LINK upgrade,打开如下的对话框。先点击Open in update mode,如果ST-LINK仿真器连接正常,会出现两个箭头所指的版本号。蓝色箭头所指是ST-LINK仿真器的固件版本,红色箭头所指是需要升级到的版本号,如果ST-LINK仿真器的固件版本号低,就需要升级。点击Upgrade按钮就可以升级。

(6)CubeIDE项目编译没错误,ST-LINK仿真器以前是可以用的,但是现在无法下载

出现这种情况时,可能是ST-LINK仿真器与电脑的连接出了问题。点击CubeIDE的主菜单项 Help 下面的ST-LINK upgrade,打开如下的对话框。点击Open in upgrade mode按钮,如果出现最下面的提示信息 ST-Link is not in the DFU mode. Please restart it. 就说明ST-LINK仿真器与电脑的连接出了问题。这种情况下,需要拔除ST-LINK与电脑连接的USB线,然后重新插上就可以了。

(7)在程序文件里写了汉语注释,在CubeMX重新生成代码后,汉语注释出现部分乱码

例如,我们在下面的一个沙箱段内写了代码,并且写了汉语注释。

在CubeMX里做了些修改,重新生成代码,那么,代码中的汉语注释可能出现部分乱码,如下图

在使用独立的CubeMX和CubeIDE时,这个问题目前暂时无法解决。有人说需要将CubeIDE 的文件编码设置为GBK,如下图。但是使用独立的CubeMX导出的文件编码就是UTTF-8,且CubeMX里无法修改编码设置。实际测试中发现,即使将CubeIDE里的文件编码设置为GBK,在CubeMX里重新生成后,还是出现部分汉字注释乱码,且下图对话框中的编码自动更改为UTF-8。

(8)CubeIDE的固件库路径设置

CubeIDE里内置了CubeMX,如果使用内置的CubeMX,也需要设置STM32固件库路径。注意,切换一个新的Workspace后,其固件库路径自动恢复为默认值,如下图。使用这样默认的固件库路径也是有问题的,应该修改。可以设置为独立的CubeMX里的固件库路径,与其共用固件库。

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用STM32CubeMX和STM32CubeIDE的常见问题和注意事项 的相关文章

  • STM32CubeMX安装

    一 STM32CubeMX下载 官网地址 xff1a STM32CubeMX STM32Cube初始化代码生成器 意法半导体STMicroelectronics 官网下载需要注册账号 网盘链接 xff08 6 8 xff09 xff1a 链
  • STM32CubeMX自动生成SYSTICK配置

    1 SYSTICK原理及其寄存器 1 1 SYSTICK原理 SysTick 是一个24位的倒计数定时器 xff0c 当计到0时 xff0c 将从RELOAD寄存器中自动重装载定时初值并继续计数 xff0c 且同时触发中断 只要不把它在Sy
  • micropython中断优先级_stm32cubemx 配置freertos中断优先级

    stm32cubeMx 直接集成freertos xff0c 可以不需要自己手动移植只需要把freertos的选项勾选就可以 但是生成的代码工程中 xff0c freertos暴露给用户的API接口并不是原生的freertos接口 xff0
  • 1、STM32CubeMX和STM32Cube库(HAL)详细介绍

    目录 前言 STM32Cube生态 STM32Cube 是什么 xff1f STM32Cube 软件工具套件 STM32Cube Embedded 软件 STM32CubeMX 编辑 前言 也许大家在学习正点原子或者其他32视频和代码的时候
  • 【STM32CubeMX】使用STM32F103C8T6输出PWM波形实现呼吸灯

    STM32CubeMX 使用STM32F103C8T6输出PWM波形实现呼吸灯 一 关于PWM二 Cube MX创建工程三 修改代码四 效果展示五 总结六 参考与代码下载 一 关于PWM 1 关于PWM 含义 PWM xff08 Pulse
  • STM32CubeMX配置串口DMA传输实现不定长数据收发

    串口简介 串口是全双工的串行通信协议 串口通信指串口按位 xff08 bit xff09 发送和接收字节 xff08 一个字节有8位 xff09 尽管比特字节 xff08 byte xff09 的串行通信慢 xff0c 但是串口可以在使用一
  • STM32CubeMX串口通讯

    串口的简单介绍 RS 232与TTL 根据通讯使用的电平标准不同 xff0c 串口通讯可分为 TTL 标准及 RS 232 标准 而STM32的串口是TTL电平标准的 如果需要使用到RS 232则需要一个电平转换芯片 单工通信 半双工通信和
  • STM32CubeMX系列|串口通讯

    串口通讯 1 串口简介 在串行通信中 xff0c 一个字符一个字符地传输 xff0c 每个字符一位一位地传输 xff0c 并且传输一个字符时 xff0c 总是以 起始位 开始 xff0c 以 停止位 结束 在进行传输之前 xff0c 双方一
  • stm32cube学习1-rcc配置选择

    在用cube配置时钟时 xff0c 有下面两个选项 BYPASS Clock Source xff08 旁路时钟源 xff09 Crystal Ceramic Resonator xff08 晶体 陶瓷晶振 xff09 下面来解释一下 xf
  • STM32 基础系列教程 24 - USB_HID_key

    前言 学习stm32 USB接口使用 学会用CUBE工具快速创建USB设备工程及调试 关于usb的相关知道请读者提前准备并学习 当然如果不想深究其中原理的话 跟着本文来操作就可以实现基于USB的设备开发了 需要提示的是 stm32在使用us
  • STM32 基础系列教程 47 - MD5

    前言 MD5消息摘要算法 英语 MD5 Message Digest Algorithm 一种被广泛使用的密码散列函数 可以产生出一个128位 16字节 的散列值 hash value 用于确保信息传输完整一致 MD5由美国密码学家罗纳德
  • STM32CubeMX的使用教程

    STM32 关于STM32CubeMX的使用 打开Cube 点击File New Project 搜索芯片型号这边选择的是STM32L071CB系列上面菜单Docs Resources可以下载数据手册程序手册等 点击Start Projec
  • STM32CUBEMX F103 HAL库开发 两路定时器的Encoder编码器模式

    机器人开发过程中 对于直流电机来说 编码器至关重要 它不仅可以使我们对电极进行精确的速度闭环 位置闭环 还可以通过时间积分 根据运动学关系 获得速度 位置等信息 STM32的定时器有编码器模式 大大的方便我们的开发 使用STM32cubeM
  • STM32 基础系列教程 36 - Lwip_dns

    前言 域名系统 英文 DomainNameSystem 缩写 DNS 是互联网的一项服务 它作为将域名和IP地址相互映射的一个分布式数据库 能够使人更方便地访问互联网 DNS使用TCP和UDP端口53 当前 对于每一级域名长度的限制是63个
  • STM32 基础系列教程 5 – 系统定时器

    前言 学习stm32 systime的使用 用基本定时器产生定时1ms定时中断 用于参生1ms系统时钟节拍 并实现将1ms 节拍改成500us 或其它时间功能 并实产生的时间节拍为机基准实现控制LED闪烁 示例详解 基于硬件平台 STM32
  • STM32CubeMX时钟源的选择

    使用STM32CubeMX进行时钟源RCC配置的时候 可以选择使用内部时钟或外部时钟 当程序对时钟精度要求较高时 通常使用外部时钟 下拉选框如下图 Disable 禁用外部时钟 BYPASS Clock Resource 外部有源晶振 旁路
  • 使用HAL库开发STM32:GPIO口基础使用与外部中断

    文章目录 目的 GPIO口基础使用 基础说明 初始化设置 输出与控制 读取端口值 GPIO口与外部中断 总结 目的 对于MCU来说GPIO口的使用是最基础的内容 仅使用GPIO口和延时等 就可以完成很多功能了 GPIO口基础使用 基础说明
  • Keil转STM32CubeIDE工程移植问题记录

    Keil转STM32CubeIDE工程移植问题记录 1 编译报错问题处理 2 工程相关配置问题 3 调试器配置 从Keil软件转战STM32CubeIDE 转换的过程中遇到了不少问题 在此记录一下 防止以后再踩坑 也给同样有转软件需求的朋友
  • VS Code 有没有办法导入 Makefile 项目?

    正如标题所说 我可以从现有的 Makefile 自动填充 c cpp properties json 吗 Edit 对于其他尝试导入 makefile 的人 我找到了一组脚本 它们完全可以实现我想要实现的目标 即通过 VS Code 管理
  • 在 Atollic TrueStudio、STM32CubeMX 中导入 C 库

    我目前正在开发 STM32F767ZI Nucleo 板和一个小安全芯片 microchip atecc508a 通过 i2c 连接进行连接 该芯片有一个可用的库加密验证库 https github com MicrochipTech cr

随机推荐

  • [HashMap源码学习之路]---数组扩容后元素的前后变化

    HashMap数组扩容后元素的前后变化 前一段时间看了HashMap 的扩容方法 觉得写的太好了 对我很有帮助 现以我理解的来写一下 主要说两方面 扩容后元素的位置 扩容后元素如何分布的 1 resize方法的源码 HashMap 中扩容方
  • ESP32的液晶中文显示

    上一篇简单说明了ESP32进行SSD1306的液晶显示 然后希望显示字符 使用前一篇的SSD1306是一个入门 但是不能显示中文 因此本篇主要演示显示中文 在arduino中有一个u8g2库 当时用UNO时使用过该库 但是用在ESP32上
  • 全国职业技能大赛云计算--高职组赛题卷①(私有云)

    全国职业技能大赛云计算 高职组赛题卷 私有云 第一场次题目 OpenStack平台部署与运维 任务1 基础运维任务 5分 任务2 OpenStack搭建任务 15分 任务3 OpenStack云平台运维 15分 任务4 OpenStack云
  • IDEA的下载、安装及配置

    IDEA的下载 安装及配置 IDEA简介 IDEA下载 安装 准备工作 IDEA工具下载 IDEA工具安装 IDEA工具启动 IDEA配置 IDEA基本配置 Appearance 显示 主题配置 关闭Intellij IDEA自动更新 Ke
  • 简易JDBC连接数据库

    简易JDBC连接数据库 1 导入jar包 首先在项目中创建lib文件包 在lib文件包中粘贴MySQL的jar包 将lib包添加为库 2 注册驱动 在类中注册驱动 Class forName com mysql jdbc Driver 提示
  • (Redis) 跳跃表(skiplist)实现原理

    跳跃表简介 跳跃表 skiplist 是一种随机化的数据 由 William Pugh 在论文 Skip lists a probabilistic alternative to balanced trees 中提出 跳跃表以有序的方式在层
  • PHP curl 获取返回的内容和头部信息示例

    请求示例 function curl res string url string data array header is post false is post false url 请求地址 token token 头部 header Co
  • WPA渗透-pyrit:GPU加速_Hash-table

    WPA渗透 pyrit GPU加速 Hash table 1 pyrit工具介绍 pyrit是一款开源且完全免费的软件 任何人都可以检查 复制或修改它 它在各种平台上编译和执行 包括FreeBSD MacOS X和Linux作为操作系统以及
  • 大学生数学竞赛习题精讲_陈兆斗

    大学生数学竞赛习题精讲 陈兆斗 链接 https pan baidu com s 1ctyZqmD 6VFgILBM0DiTcg 提取码 i76s 复制这段内容后打开百度网盘手机App 操作更方便哦
  • mysql用事务实现更新数据

    前言 在手动批量更新正式环境数据库时 建议使用事物进行更新 避免更错数据 造成不必要的麻烦 现表中有三条数据 使用事物批量将name字段为mgx phone字段为17837107346 所有数据中的address字段更新成河北唐山 开始事物
  • moco接口框架介绍

    moco接口框架介绍 Moco 是一个搭建模拟服务器的工具 其支持 API 和独立运行两种方式 前者通常是在 junit testng等测试框架中使用 后者则是通过运行一个 jar 包开启服务 在maven中央仓库中 moco有三个版本 分
  • <Linux开发>系统移植 -之- linux内核移植过程详细记录(第二部分完结)

    Linux开发 系统移植 之 linux内核移植过程详细记录 第二部分完结 前面 第一部分讲解了 NXP官方原厂的Linux直接编译下载到开发板的操作过程 及测试效果 以及过程中设计使用的一些辅助工具 从第一部分 可以熟悉整个Linux编译
  • JSON 语法规则详解

    JSON 的语法规则十分简单 无论用何种方法总结都只有数条而已 它参考了 C 语言家族的一些习惯 学习起来并不会感到陌生 回顾JSON 的五点语法 1 数组 Array 用方括号 表示 2 对象 Object 用大括号 表示 3 名称 值对
  • 抽象方法与抽象类

    没有方法体的方法就是抽象方法 如果一个类中有抽象方法则这个类就是抽象类 public abstract class Abs public abstract void shoot 抽象方法 public abstract void eat p
  • Scrapy 爬虫笔记

    目录 概述 开始 启动项目 爬虫初始化 处理响应 回调函数的参数 图片下载 未完待续 相关资源 概述 本文记录了个人使用 Scrapy 爬取某网站产品信息 包含图片下载 的整个过程 也可以作为一篇 Scrapy 实战教学博客 首先从 All
  • 网络安全-自学笔记

    目录 相关网站推荐 WEB 应用 安全 学习路线 推荐 书籍 网站 在线靶场 基础 XSS攻击 CSRF漏洞 劫持攻击 点击劫持 SSRF漏洞 文件包含漏洞 文件上传漏洞 XXE漏洞 WebShell 解析安全 RCE漏洞 SQL注入漏洞
  • 网络爬虫是什么?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 互联网诞生之初 是为了让人们更容易的分享数据 交流通讯 互联网是桥梁 连接了世界各地的人们 网站的点击 浏览都是人为的 与你聊天的也是活生生的人 然而 随着技术的发展 人们
  • Java 实现区块链

    Java 是一种流行的面向对象的编程语言 它可以用来实现区块链 在实现区块链时 通常需要考虑以下几个方面 区块的数据结构 区块通常包含一些数据 如交易信息 以及一些元数据 如区块的哈希值和时间戳 你可以使用 Java 中的数据结构 如类 对
  • 【C++】STL —— list的基本使用

    目录 一 list容器的简介 二 list容器常用的接口 1 list初始化操作 1 构造函数 编辑 2 析构函数 3 赋值重载函数 2 list容量相关的函数 3 list的迭代器 4 list的增删查改 一 list容器的简介 1 li
  • 使用STM32CubeMX和STM32CubeIDE的常见问题和注意事项

    STM32CubeMX和STM32CubeIDE是ST公司的STM32Cube生态系统中最重要和最常用的2个软件 使用这2个免费软件可以高效地进行STM32系统的开发 CubeMX用于对一个STM32器件进行可视化的配置 然后生成CubeI