首页 > 其他分享 >STM32CubeMx LL库BUG之一

STM32CubeMx LL库BUG之一

时间:2023-07-21 09:00:32浏览次数:34  
标签:StackType LL STM32CubeMx stack 堆栈 sizeof BUG size

STM32CubeMx是目前最新的V5.5
STM32F407,输出LL库,使用FreeRTOS
任务堆栈大小错误: 在STM32CubeMx上任务堆栈的单位是word,即4个byte。但是实际上这里的单位是byte,就是说你设置256的话(即1024 bytes),实际上给你生成的代码只有256byte,这可能导致任务堆栈溢出,发生各种各样的问题,最常见就是HardFault。 查看osThreadNew函数,发现里面有一句:

/* In FreeRTOS stack is not in bytes, but in sizeof(StackType_t) which is 4 on ARM ports.       */
        /* Stack size should be therefore 4 byte aligned in order to avoid division caused side effects */
        stack = attr->stack_size / sizeof(StackType_t);
  • 1
  • 2
  • 3

其中sizeof(StackType_t)=4,也就是说,这个函数里面又给除了个4,导致实际的堆栈大小是你所设置的4分之一。
如果说那我就在STM32CubeMx多设4倍不就正好了吗,但这样也不行,因为STM32CubeMx里还是按word来算总的堆栈大小,如果你每个任务都设4倍,总堆栈可能会超过可用RAM,导致无法生成代码。
所以只能把stack = attr->stack_size / sizeof(StackType_t);改为stack = attr->stack_size ,但是每次生成代码后又会覆盖,每次生成代码都要再改一遍。
这个BUG在用HAL和LL库都有。

标签:StackType,LL,STM32CubeMx,stack,堆栈,sizeof,BUG,size
From: https://www.cnblogs.com/SymPny/p/17570287.html

相关文章

  • 本地运行MLC-LLM对话模型体验
    摘要在macOS(AppleM2芯片)计算机运行MLC-LLM对话模型。MLC-LLM简介[https://mlc.ai/mlc-llm/#windows-linux-mac]开源AI聊天机器人MLCLLM发布,完全本地运行无需联网MLCLLMisauniversalsolutionthatallowsanylanguagemodelstobedeployednativelyonadiv......
  • allure 生成测试报告
    importpytest,os,allureclassTest2:deftest_demo(self):assert1==1if__name__=='__main__':#在当前模块执行#设置Allure报告的生成路径和保存路径result_dir="./result"report_dir="./report"#pytest.main......
  • No lockfile in this directory. Run `yarn install` to generate one.
    如何解决"Nolockfileinthisdirectory.Runyarninstalltogenerateone."错误介绍在使用Yarn进行JavaScript项目开发时,有时候会遇到一个错误信息:"Nolockfileinthisdirectory.Runyarninstalltogenerateone."这个错误通常是由于项目缺少yarn.lock文件导致......
  • You don't have either docker-client or docker-client-latest installed. Pleas
    如何安装docker-client或docker-client-latest概述在本文中,我将向您展示如何安装docker-client或docker-client-latest,并解释每一步所需的代码及其用途。无论您是一名刚入行的开发者还是有经验的开发者,这篇文章都将帮助您完成安装过程。准备工作在开始之前,请确保您已经正......
  • Windows下spark能运行但打不开spark-shell
    解决Windows下spark能运行但打不开spark-shell问题作为一名经验丰富的开发者,我将教你解决Windows下spark能够运行但无法打开spark-shell的问题。下面是整个解决流程,可以通过表格的形式展示步骤:步骤操作步骤1检查Java环境变量步骤2检查Hadoop环境变量步骤3检......
  • CF755G PolandBall and Many Other Balls
    列出转移方程就是傻鸟题了,具体地,令\(f_{i,j}\)为前\(i\)球取出\(j\)组的方案数,有:\[f_{i,j}=f_{i-1,j-1}+f_{i-1,j}+f_{i-2,j-1}\]列出\(f_{i}\)的GF\(F_i(x)\):\[F_i(x)=F_{i-1}(1+x)+F_{i-2}\cdotx\]这是递推,把矩阵元素改成多项式,矩阵快速幂即可。\(O(k\logk\log......
  • android.widget.TextView.getLayoutParams()' on a null object reference
    解决“android.widget.TextView.getLayoutParams()'onanullobjectreference”错误介绍在Android开发过程中,我们经常会遇到各种错误和异常。其中之一就是"android.widget.TextView.getLayoutParams()'onanullobjectreference"错误。当我们在操作一个TextView的LayoutPar......
  • pyinstaller使用-python项目转换成exe可执行文件
    http://blog.csdn.net/pipisorry/article/details/50620122Python不是每个人的计算机里面都有安装,当您写了一个好用的工具,需要一个standaloneexectuable环境的需求。并且用python写些脚本什么的,有时候脚本写完以后,每次运行都得在IDE打开在运行,很麻烦,所以经常将python编译成exe......
  • 报from PyQt5.QtWidgets import * ImportError: DLL load failed: %1 不是有效的 Win3
    导入时,报fromPyQt5.QtWidgetsimport*ImportError:DLLloadfailed:%1不是有效的Win32application!查了很多资料,发现原来PyQt5安装包也是区分电脑位数的,我的电脑是32位的,装的PyQt5确是64位的,由于我这边用pipinstallPyQt5一直报timeout错误,所以我采用的是去官网直接下......
  • Hello world
    Helloworld!编写代码publicclassHello{publicstaticvoidmain(String[]args){System.out.print("Hello,World!");}}编译javacjava文件,生成class文件运行class文件,javaclass文件......