我这里说明的问题,一般会出现在UCOS系统上,如果是裸机应该不怎么会出现,只要程序不是太大,不是无休止的使用内存。

我遇到的现象是,在某个任务运行中进行多层函数调用时在return时无法返回,这种情况一般都是因为堆栈过小的问题。一般涉及工程中两个地方。

一个是任务堆栈设置那里,一个是总堆栈设置那里(stm32平台一般是stm32xxxxx.s文件中),任务堆栈设置的位置每个工程可能都不一样,自行寻找修改即可,总堆栈在stm32平台中在下面代码红色所示的位置:

<span style="color:#ff0000;">Stack_Size      EQU     0x00000D00</span>AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>Heap_Size       EQU     0x00000200AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit

把总堆栈和任务堆栈同时调大或者够用的状态无法返回的问题即可解决。也不要太大,免得浪费内存。

还有一个问题,如果在函数内部使用大的数组,如分配一个4K大小的数组,这样是不行的,当然还是对有操作系统的来说,裸机也有可能会出问题,当然取决于设置的栈大小,这是我的理解,没有做测试。

在操作系统中不要这么使用,如果是大的数组,那么尽量设置为全局的形式,免得程序莫名其妙的崩溃(我花了好长时间来寻找这个问题~~~~(>_<)~~~~)。
在使用UCOS这类操作系统时,对内存的使用以及指针的使用要务必格外小心仔细,要不然出现了莫名其妙的问题,很难去定位寻找,因为是多任务运行,这句话有问题,但是引起这句有问题的地方在哪却是未知。

STM32 C/C++ uCOSII 函数调用return 无法返回或者函数无法正常反回上一层函数的问题相关推荐

  1. STM32迷你板UCOSII系统移植

    写在前面: 所需要下载的UCOSII代码链接:https://pan.baidu.com/s/1D_IyXhODEa5oVUdDv-GJrQ 提取码:mte3 本文结构 1.UCOSII简介 2.UC ...

  2. python函数的返回值是返回引用吗_python-函数(上):函数返回值、函数调用、前向引用...

    编程方法: 1.面向对象:类--class 2.面向过程:过程--def 3.函数式编程:函数--def #python中函数#函数的定义#打印一个佛祖镇楼 -> 一个功能点的解释 defpri ...

  3. [导入]如何理解Return的返回值?

    如何理解Return的返回值? 问题: 在创建和录制脚本的时候,发现在脚本vuser_init.Action.vuser_end三部分,都会有一条"return 0;"语句,那么我 ...

  4. 如何理解Return的返回值?

    如何理解Return的返回值? 问题:  在创建和录制脚本的时候,发现在脚本vuser_init.Action.vuser_end三部分,都会有一条"return 0;"语句,那么 ...

  5. python中return的理解-python中的return的返回与执行

    author:headsen chen date:2018-03-21 15:12:09 notice:created by headsen chen himself and not allowed ...

  6. golang return要返回的参数太多_Golang中的Defer必掌握的7知识点

    在用Golang开发的时候,defer这个语法也是必备的知识,但是我们除了知道他是在一个函数退出之前执行,对于defer是否还有其他地方需要注意的呢.本文整理的defer的全场景使用情况,部分场景源自 ...

  7. python中的return的返回与执行

    转载 author:headsen  chen date:2018-03-21  15:12:09 notice:created by  headsen chen himself  and not a ...

  8. python中的return函数-python中return的返回和执行

    1打印函数名和打印函数的执行过程的区别 例子1.1 defa():print(111)print(a) #打印a函数的内存地址,不会对a函数有影响,a函数不会执行 print(a()) #打印a函数的 ...

  9. python自定义函数中return可以返回多个值_python函数return返回多个值

    在函数中一旦使用return,那么函数就会停止往下执行!但是,我们有时候需要函数返回多个值,怎么实现呢?其实python的return可以返回多个值,而且Python 会自动将多个返回值封装成元组. ...

最新文章

  1. Java是如何实现Future模式的?万字详解!
  2. (三十一)java多线程二
  3. 堆栈的定义与操作-顺序存储,链式存储(C语言)
  4. 在洛谷开了一个邀请赛
  5. 服务器io修改,更改 Linux I/O 调度器来改善服务器性能
  6. Mr.J---重拾Ajax(四)-- 跨域
  7. CSS基础——选择器【学习笔记】
  8. 用easyx画五角星_冷军画了一把破剪刀, 竟然卖到了160万,被专家抨击:乱涂鸦!得奖后专家顿时不说话了...
  9. MacPorts 命令集合
  10. SQL Server2008 附加数据库时出错
  11. AmMap创建交互式Flash地图
  12. 在BAT工作是什么样的?来听听在职员工们的说法
  13. 每日一道 LeetCode (4):罗马数字转整数
  14. 刘新华老师-沪师经纪
  15. 达芬奇调色DaVinci Resolve Studio18v18.1.4 2023中文版更新发布,支持intel/M1/M2芯片
  16. html5 文字转换烟花,用HTML5制作烟火效果的教程
  17. SI5351A的信号发生器驱动程序
  18. 达人秀计算机教学,回顾〡信息技术达人秀
  19. Building a Restful Web Service(最好的Spring入门教程 --来自Spring官网的Guides)
  20. 用html5如何编写星球运动,HTML5---Canvas-模拟地球-星球运行轨道

热门文章

  1. a commit git 参数是什么意思_深入理解Git - 一切皆commit
  2. 傅里叶变换处理音频c++_KWS-SoC——基于Wujian100的音频流关键词检测SoC拓展开发笔记之一...
  3. 计算机网络安装建设厂家,互联网工厂设备与安装总结报告(26页)-原创力文档...
  4. 哪些计算机p玩游戏,有了这个神器,你的电脑玩什么游戏都带得动
  5. html 注册插件,HTML 插件
  6. python算法详解张玲玲电子版_算法之路该如何学习?
  7. mac catalina删除系统多余文件 内存不足_macOS Catalina Patcher(如何在旧mac上安装Catalina系统)...
  8. win10弹不出密码输入框_电脑互访提示输入网络密码,怎么办?
  9. Mac连接路由器后没有反应_无线WiFi无法连接到网络怎么办【解决方法】
  10. springmvc 前端传给后台中文数据时,会产生乱码