vscode+platformIO开发STM32(六)

vscode+platformIO开发STM32

前言

果然不动就没问题,一动问题还挺多。。。

FreeRTOS的FPU问题

FPU是一部分MCU自带的硬件浮点运算功能,开启硬件浮点后,运算速度可以加速。本人在做的是运动控制类,时常需要和浮点数打交道,在之前使用的STM32G0系列MCU,属于Cortex-M0+,它并不是带有FPU,因此在移植FreeRTOS、DSP库(软件)的时候,并没有遇到很多问题,更多的是直接依赖stm32cubeMX的自带的东西直接使用。但是在我将MCU更改为STM32F429之后,发现它是带FPU的,在freeRTOS的port.c的文件中也有操作FPU的。因此在没有任何更改直接换MCU的情况下,会有这样的报错:

C:\Users\ADMINI~1\AppData\Local\Temp\ccFdJEoV.s:330: Error: selected processor does not support `vstmdbeq r0!,{s16-s31}' in Thumb mode
C:\Users\ADMINI~1\AppData\Local\Temp\ccFdJEoV.s:332: Error: instruction not allowed in IT block -- `stmdb r0!,{r4-r11,r14}'
C:\Users\ADMINI~1\AppData\Local\Temp\ccFdJEoV.s:352: Error: selected processor does not support `vldmiaeq r0!,{s16-s31}' in Thumb mode
C:\Users\ADMINI~1\AppData\Local\Temp\ccFdJEoV.s:354: Error: instruction not allowed in IT block -- `msr psp,r0'
*** [.pio\build\SGRBL_F429\src\stm32-platformio-freertos\portable\GCC\ARM_CM4F\port.o] Error 1

毫无疑问,这是配置有问题,很巧的是,我见过这个报错,如果自己曾经写过makefile,并且有过普通从没有FPU的makefile转到带FPU的makefile的过程的话,应该都会遇到这样的问题,其实这也不难解决,简单的,我不自己写,我用stm32cubeMX先生成一个来看看,有什么是需要注意的:
在这里插入图片描述
makefile里面,对比一下就知道,多了这部分操作浮点的,当然我们也知道platformIO本身也是使用gcc的,几乎可以说就是一个升级版的makefile。OK,底子摸懂了,就开始表演了
毫无疑问,我直接添加这句话
在这里插入图片描述
结果当然是毫无疑问,出问题了
在这里插入图片描述
经过我多番寻找,结果发现是PIO的一个bug,所以解决方法也给上:

  • 1、先创建一个update_link_flags.py
  • 2、在update_link_flags.py里面写上这些内容:
# Custom settings, as referred to as "extra_script" in platformio.ini
#
# See http://docs.platformio.org/en/latest/projectconf.html#extra-script

from SCons.Script import DefaultEnvironment

env = DefaultEnvironment()

env.Append(
    LINKFLAGS=[
        "-mthumb",
        "-mfloat-abi=hard",
        "-mfpu=fpv4-sp-d16",
        "-mcpu=cortex-m4"
    ]
)

我的是这样的:
在这里插入图片描述
这样的话,你可以很愉快地进行编译了。
在这里插入图片描述

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: VSCode是一款流行的开源代码编辑器,PlatformIO是一个跨平台的开发工具,可以用于开发各种嵌入式系统。STM32是一种基于ARM Cortex-M内核的微控制器系列,常用于嵌入式系统开发。在VSCode中使用PlatformIO可以方便地进行STM32的开发。 ### 回答2: VSCode是一个轻量级的代码编辑器,可用于多种编程语言,包括C++,Python,Java,JavaScript等。而PlatformIOSTM32则是与嵌入式系统相关的两个开源项目。 PlatformIO是一个跨平台的开源生态系统,可以用于开发各种不同的嵌入式系统。它提供了一个集成开发环境,包括自动构建工具和OTA(Over-The-Air)更新,能够广泛地支持多种MCU及其开发板的开发。通过使用PlatformIO开发者可以在各种嵌入式系统上编写、构建、调试和上传代码。 STM32则是STMicroelectronics公司生产的一系列32位ARM Cortex-M微控制器,主要用于嵌入式系统的开发STM32在市场上备受欢迎,原因之一就是它拥有强大的性能,广泛支持各种外设和接口,并且有成熟的软件开发生态系统。STM32平台可以使用多种IDE工具进行开发,包括Keil,IAR和Eclipse等。 在应用中,VSCode作为集成开发环境可与PlatformIO一起使用,在编写嵌入式系统代码时可以使用PlatformIO提供的调试工具和ST-Link调试器。通过在VSCode中安装PlatformIO插件,开发者可以以统一的方式管理多个项目和构建任务,包括各种MCU型号的软件开发、构建和调试。 总的来讲,使用VSCode平台和PlatformIO工具链开发STM32的嵌入式系统可以提供高效可靠的开发环境,可以减少大量的开发时间和工作量。同时,这种开发方式能够帮助开发者更快地理解代码和系统,加速系统的开发和调试,提高代码的质量和开发效率。 ### 回答3: VSCode+PlatformIO+STM32 近年来,开源硬件领域的发展日益成熟,吸引了大量开发者和爱好者的关注和参与。在各种硬件平台中,STMicroelectronics的STM32系列是深受欢迎的一种。而为了更高效、更舒适地开发STM32应用,VSCode+PlatformIO是一种不错的选择。 VSCode是一款免费开源的跨平台IDE,具有强大的扩展性和丰富的功能,支持多种语言和框架的开发PlatformIO则是一种开源的、跨平台、集成开发环境、构建系统和库管理系统。这两款开源软件都是由全球社区共同开发的,具有以下突出的优点: 1.免费开源: VSCode和PlatformIO都是开源软件,完全免费,用户可以自由使用和修改。这一点对于开源硬件爱好者来说,非常重要。因为很多嵌入式开发IDE都很贵,而且在功能和体验上也不能很好地满足开发需求。 2.功能丰富: VSCode是一款非常强大和灵活的IDE,支持多种语言和框架的开发PlatformIO则提供了全面的开发工具链,能够满足开发、调试和构建等方面的需求。而且,PlatformIO提供了内置的库管理系统,可以方便地引入和管理各种开源库。 3.跨平台支持: VSCode和PlatformIO都支持多种不同操作系统的开发,如Windows、Mac和Linux等。这一点对于不同的开发者来说,非常方便。因为他们可以在自己喜欢的平台上开发项目,而不需要转换环境。 4.易于使用: VSCode和PlatformIO都是非常易于使用的软件,对于初学者和专业人士都非常适合。而且,两个软件都有详细的文档和社区支持,能够解决开发中遇到的各种问题。 总之,VSCode和PlatformIO是一款非常好的开发工具组合,能够为STM32开发者提供全面的支持。通过这款软件,开发者可以高效地搭建嵌入式开发环境,提高开发效率和代码质量。如果你是STM32的爱好者或者想要进入嵌入式开发领域,那么这款开源软件一定是你不可错过的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值