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> 标签所包围的旧项目名改为新项目名。

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

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

总结

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

  • 46
    点赞
  • 257
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论
你好!对于STM32CubeIDE使用教程,我为你提供一些基本的信息。首先,STM32CubeIDE是STMicroelectronics提供的一款集成开发环,用于开发基于STM32微控制器的嵌入式应用程序。 以下是一些开始使用STM32CubeIDE的步骤: 1. 下载和安装:访问STMicroelectronics的官方网站,找到STM32CubeIDE的下载页面,并下载适合你操作系统的版本。安装完毕后,启动STM32CubeIDE。 2. 创建新项目:在STM32CubeIDE的主界面,选择“File”菜单中的“New”选项。然后选择“STM32 Project”,然后按照向导指示输入项目名称和存放位置。 3. 选择MCU型号:在项目向导中,选择你所使用STM32微控制器型号。你可以根据自己的需求选择合适的型号。 4. 配置项目:在项目向导中,你可以选择启用一些可选功能和模块,例如使用RTOS、USB等。根据你的应用需求进行选择,并进行相应的配置。 5. 生成代码:完成项目向导后,STM32CubeIDE会自动生成初始化代码和基本的工程结构。你可以在代码生成向导中选择所需的外设和功能,并根据需要进行自定义配置。 6. 编写应用程序:在生成的工程结构中,你可以编写自己的应用程序代码。可以使用C或C++语言进行编写,并利用STM32Cube提供的库函数进行开发。 7. 编译和调试:在STM32CubeIDE中,你可以使用集成的编译器和调试器进行代码编译和调试。通过选择“Project”菜单中的“Build Project”选项,你可以进行编译。通过选择“Debug”菜单中的“Debug Configurations”选项,你可以进行调试配置和启动调试。 这些是使用STM32CubeIDE的基本步骤,希望对你有所帮助。如果你需要更详细的教程或有其他问题,请告诉我!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Naisu Xu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值