新手上路
- 积分
- 43
- 金钱
- 43
- 注册时间
- 2016-9-26
- 在线时间
- 8 小时
|
发表于 2017-12-5 19:50:05
|
显示全部楼层
有疑问就对了。我也搞了好久才明白。实际上代码你把
Stack_Size EQU 0x00001000
改成 Stack_Size EQU 0
代码依然跑的很好的。
===============
在使用FreeRTOS时一直存在对栈设置的疑问,见以下三点疑问:
1、Starup_stm32f40_41xxx.s中的 “Stack_Size EQU 0x00001000”这里的设置的作用?
2、在工程“options”——“target”设置中IRAM1的start地址、size大小中size大小的用处?
3、在FreeRTOSConfig.h中,宏定义#define configTOTAL_HEAP_SIZE ((size_t)(55*1024))的作用?三个设置栈大小的地方之间又有何种联系?
4、任务栈与系统栈的关系?多谢指点讨论!!
先第4条:
这两个没关系。一点不重叠。
这个首先搞懂51单片机,先是通用寄存器组 然后 是 固定的bit,然后是你定义的全局变量和static之类的变量,然后就是栈了。
STM32也是如此。
STM32的那个头文件的 ————heap是ST公司给OS准备的。但是freertos的代码并没有把那个大数组uxheap定义到这里(就是说此时时任务堆栈既没有放到系统堆 也没放到系统栈里),当然你也可以决定地址定位把uxheap定义到--heap的位置(就是说此时时任务堆栈放到系统堆 )。 |
|