STM32CubeIDE使用笔记(04):杂项记录(要点、方法、技巧等等)

目的

本文主要记录了STM32CubeIDE使用中的一些要点、方法、技巧等等。

添加引用自己的文件

新建文件/文件夹:

  • 在IDE左侧项目资源管理器(Project Explorer)中选择对应目录,然后右键 New 子菜单中可以选择新建源码文件、头文件、文件夹、源码文件夹等(如果没有请选择Other,在弹出窗口的C/C++中查找);

导入文件/文件夹:

  • 方式一:在IDE左侧项目资源管理器(Project Explorer)中选择对应目录,然后右键 import... ,选择弹出窗口的 General > File System 然后 Next> ,在新窗口中浏览选择要导入的目录/文件,然后导入;
  • 方式二:直接将要添加的文件/文件夹拖入到项目资源管理器(Project Explorer)中对应目录(要添加的文件/文件夹不要提交放在该目录中,拖动添加时会询问是否复制到该目录中或是仅仅链接);

将头文件和源码添加到项目中:
最简单的方式就是直接在资源管理中选中要添加的文件夹右键菜单进行设置:
在这里插入图片描述
需要注意的是上面两个选项逻辑一个是勾选则包含,一个是勾选则取消。

也可以使用下面方式将头文件和源码添加到项目中:
添加文件和文件夹后在使用时可能会提示找不到,需要将头文件和源码路径添加到项目中, 在IDE左侧项目资源管理器(Project Explorer)中选择项目右键 Prorerties 在弹出窗口的 C/C++ General > Paths and Symbols 中的 IncludesSource Location 分页下分别添加对应路径:
在这里插入图片描述
另外在多说一句:默认情况下自己的文件中只要引用 main.h 就可以调用STM32CubeMX配置导入的各种库了。

编译生成 bin / hex 文件

默认情况下STM32CubeIDE编译生成的是elf格式的固件,如果想要bin或hex格式的固件可以在IDE左侧项目资源管理器(Project Explorer)中选择项目右键 Prorerties 在弹出窗口的 C/C++ Build > Settings > Tool Settings > MCU Postbuild outputs 中选中生成bin和hex文件即可:
在这里插入图片描述

编译优化等级设置

在IDE左侧项目资源管理器(Project Explorer)中选择项目右键 Prorerties 在弹出窗口的 C/C++ Build > Settings > Tool Settings > MCU xxx Compiler > Optimization 中可以设置编译优化等级。优化等级会影响编译生成固件占用Flash、RAM大小,影响运行效率,优化设置有可能会导致代码运行异常,需要根据实际情况设置:
在这里插入图片描述

全局宏定义

在IDE左侧项目资源管理器(Project Explorer)中选择项目右键 Prorerties 在弹出窗口的 C/C++ General > Paths and Symbols > Symbols 中可以添加全局宏定义:
在这里插入图片描述

assert_param函数使用

STM32 HAL库中的函数大多内部都有assert_param函数,该函数用来检查用户输入参数是否正确,默认情况下在stm32fxxx_hal_conf.h文件中可以找到如下定义:

/* ########################## Assert Selection ############################## */
/**
  * @brief Uncomment the line below to expanse the "assert_param" macro in the 
  *        HAL drivers code
  */
/* #define USE_FULL_ASSERT    1U */



/* Exported macro ------------------------------------------------------------*/
#ifdef  USE_FULL_ASSERT
/**
 * @brief  The assert_param macro is used for function's parameters check.
 * @param  expr: If expr is false, it calls assert_failed function
 *         which reports the name of the source file and the source
 *         line number of the call that failed. 
 *         If expr is true, it returns no value.
 * @retval None
  */
  #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
  void assert_failed(uint8_t* file, uint32_t line);
#else
  #define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */

在main.c中可以找到下面语句:

#ifdef  USE_FULL_ASSERT
/**
 * @brief  Reports the name of the source file and the source line number
 *         where the assert_param error has occurred.
 * @param  file: pointer to the source file name
 * @param  line: assert_param error line source number
 * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{ 
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

可以看到默认情况下assert_param是没有启用的,可以通过下面几种方式之一启用:

  • 在STM32CubeMX生成代码时勾选 Project Manager > Code Generator > HAL Settings > Enable Full Assert
  • 在项目全局宏定义中添加 USE_FULL_ASSERT (方式见上节,推荐);
  • 手动将stm32fxxx_hal_conf.h文件中 /* #define USE_FULL_ASSERT 1U */ 取消注释(不推荐);

启用assert_param后可以在main.c的 void assert_failed(uint8_t *file, uint32_t line){} 函数中添加语句,比如通过串口或SWV打印输出相关信息,该函数会在你使用HAL库函数输入参数错误的时候运行。

正式发布版的程序中建议关闭该功能,因为该功能对性能和固件体积影响比较大。

调试异常

STM32CubeIDE有时会出现启动调试报错或是调试无数据上传等异常,排除硬件和调试配置等原因后还是异常的话,可以尝试重启STM32CubeIDE,若还是不行尝试重启电脑。

使用C++

STM32CubeIDE可以在新建项目时选择建立为C++项目,或是在已有的C项目中右击选择 Convert to C++ 将项目转为C++项目。但是目前版本中(1.0.2)默认的入口文件还是main.c,在这里是无法直接使用C++的函数或其它语法的,有两种方法可以来处理这个问题:一、将mian.c重命名为mian.cpp;二、 .cpp 文件中使用C语言风格的函数包围C++部分操作,然后使用 extern “C” 作为前缀来修饰导出这些函数,这样就可以在 .c 文件中使用这些函数了。
在这里插入图片描述
注意事项:
当你用STM32CubeMX重新生成代码后项目中就会有一个main.c和一个main.cpp,你需要根据实际情况整合代码,保留一份main.cpp。

更正:
mian.c中也可以调用.cpp中的函数,只需要使用 extern "C" 作为前缀来修饰导出这些函数即可。但是导出的函数必须符合C语言函数的规则,比如重载函数或是类成员函数就需要使用一层符合C语言规范的函数来包围。

STM32CubeMX代码生成异常

偶尔会碰到在STM32CubeMX中配置了资源生成代码,但代码并未正确配置生成的情况,尝试重新在STM32CubeMX中动一动相关资源选项,然后重新生成代码,一般重复之后就可以正确生成代码了。

复制项目并更改项目名称

开发过程中有时候需要复制一个已有的项目,在该项目之上进行开发,STM32CubeIDE不允许同一个工作空间中出现同名项目,这时候就需要修改项目名称了,方法有下面两种:

  • 一般的可以在STM32CubeIDE的项目资源管理器(Project Explorer)中选择项目,然后右键修改项目名称(在上面提到的需求中这种方式就不是非常方便了);
  • 将项目文件夹名改为新项目名,将.ioc文件名改为新项目名,如果有过调试可以将.elf.launch文件名也改为新项目名。最后还有最重要的一点——使用文本编辑器(记事本也成)打开.project文件,将其中第一处 <name> </name> 标签所包围的旧项目名改为新项目名。

默认情况下中文字体大小异常

这个问题是由于字体和字符集引起的,可以通过修改设置来解决:
在这里插入图片描述

总结

要点、方法、技巧等没法一下子全部描述全面,本文将依据个人使用情况持续更新。

### STM32CubeIDE 使用教程 #### 启动与初步设置 安装完成后,通过双击桌面上的STM32CubeIDE图标来启动该集成开发环境(IDE)[^1]。首次运行时,建议按照向导完成基本配置。 #### 插件管理 对于需要额外功能支持的情况,可以将特定工具链或调试器的支持包放置到指定位置。例如,OpenOCD 的最新版本应被解压缩并放入 `C:\ST\STM32CubeIDE_1.6.1\STM32CubeIDE\plugins` 文件夹内[^2]。 #### 学习资源推荐 针对初学者而言,可以从简单的项目入手练习编程技能。比如实现一个“跑马灯”的实验,在这个过程中理解如何操作GPIO端口以及查阅硬件连接方式是非常重要的实践环节之一。以正点原子精英版为例,其LED指示灯电路设计采用了上拉电阻结构,因此当对应的I/O引脚(如PB5, PE5)处于低电平时就会触发发光二极管亮起[^3]。 ```cpp // 示例代码:点亮 LED (假设使用 HAL 库) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET); // PB5 输出低电平 HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_RESET); // PE5 输出低电平 ``` #### 注册指南 关于STM32CubeIDE本身的激活流程并不复杂,通常情况下购买官方授权的产品即会附带有效的许可证密钥;如果是试用版本,则无需特别注册即可直接体验大部分核心特性。不过为了获得更长时间的技术支持和服务保障,还是鼓励用户选择正规渠道获取正版软件使用权。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naisu Xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值