完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本章节为大家讲解FreeRTOS任务栈大小的确定方法以及栈溢出检测方法。给任务分配多大的栈空间,一直是初学者比较头疼的问题,本章就主要为大家讲解如何解决此问题。
本章教程配套的例子含Cortex-M3内核的STM32F103和Cortex-M4内核的STM32F407以及F429。 11.1 任务栈大小的确定 11.2 什么是栈溢出 11.3 FreeRTOS的栈溢出检测机制 11.4 实验例程说明(任务栈溢出检测方式一) 11.5 实验例程说明(任务栈溢出检测方式二) 11.6总结 11.1 任务栈大小的确定 在基于RTOS的应用设计中,每个任务都需要自己的栈空间,应用不同,每个任务需要的栈大小也是不同的。将如下的几个选项简单的累加就可以得到一个粗略的栈大小: u 函数的嵌套调用,针对每一级函数用到栈空间的有如下四项: l 函数局部变量。 l 函数形参,一般情况下函数的形参是直接使用的CPU寄存器,不需要使用栈空间,但是这个函数中如果还嵌套了一个函数的话,这个存储了函数形参的CPU寄存器内容是要入栈的。所以建议大家也把这部分算在栈大小中。 l 函数返回地址,针对M3和M4内核的MCU,一般函数的返回地址是专门保存到LR(Link Register)寄存器里面的,如果这个函数里面还调用了一个函数的话,这个存储了函数返回地址的LR寄存器内容是要入栈的。所以建议大家也把这部分算在栈大小中。 l 函数内部的状态保存操作也需要额外的栈空间。 |
|
相关推荐
|
|
11.6 总结
本章节主要为大家讲解了任务栈大小的确定以及栈溢出检测的两种方法,建议实际操作下本章节配套的例子,对栈溢出有一个感性的认识,随着以后的学习再深入理解并运用。 |
|
|
|
|
|
938 浏览 0 评论
553 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口编写程序
1105 浏览 0 评论
STM32系列单片机可以让自己的GPIO去控制自己的RESET吗?有什么风险?可以规避吗?
1470 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口参数设置
895 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11581 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-1 06:08 , Processed in 0.440372 second(s), Total 42, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号