| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32F4使用ucosii时操作浮点数卡死的问题 -> 正文阅读 |
|
[嵌入式]STM32F4使用ucosii时操作浮点数卡死的问题 |
一、BUG? 之前使用STM32F401的单片机移植了ucosii操作系统后。在编写任务函数时,在循环中调用sprintf函数时莫名卡死。后来,查找bug后发现在操作浮点数时会莫名卡死,换成printf函数也是一样。最后得出一个结论:只要在任务主循环中使用浮点数就会出现卡死的bug。 二、解决方案2.1方案一、字节对齐(M3)? 遇到这个bug之后,第一时间去百度了。后来在网上找到了这篇文章 UCOS-II之字节对齐问题。虽然文章里面说的是M3的,但是试过之后也是一样,没有办法消除BUG。这个方法对M4没用,但对M3有用,如果M3移植ucosii遇到这种问题可以使用文章中更改字节对齐的办法。具体细节网上有很多,可以自行百度。 可以参考这个博客:https://blog.csdn.net/weixin_43548213/article/details/90449336 2.2方案二、暴力解决? 在Floating Point Hardware的选项选择Not Used
2.3方案三、FPU? 方案三的办法是开启F4的FPU,如果不知道什么是FPU,可以自行百度。FPU简介-CSDN博客转载 可以参考这篇博客-STM32F4之FPU设置 使能OS_CPU_ARM_FP_EN这个宏
C/C++的define里面,定义DEF_ENABLED=1,定义__TARGET_FPU_VFP,定义__FPU_PRESENT=1,定义__CC_ARM 操作成功后如下图: **这时候发现system_stm32f4xx.c的函数SystmInit里的421行条件编译判断成功(如果还是暗的意味着上面的步骤做错),此时FPU打开成功。**如下图: 在stm32F4的startup… .s启动文件中,找到Reset_Handler函数 添加如下代码:
最后 任务使用FPU方法: 如果任务需要处理浮点数,在任务切换时需要保存该任务的浮点寄存器。所以调用OSTaskCreateExt接口来创建任务。 在创建只需要选择OS_TASK_OPT_SAVE_FP即可,OS就会对该任务保存浮点寄存器:
测试:在任务函数中定义一个浮点数后,在for(;;)里使用浮点数变量,如float a; a++; 参考网站: 如果还是不能解决,请在评论区留言。 t.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242) 如果还是不能解决,请在评论区留言。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 12:12:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |