IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> vscode+platformIO开发STM32(六) -> 正文阅读

[嵌入式]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"
    ]
)

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

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:22:24  更:2022-04-06 23:23:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:26:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码