本帖最后由 haibao211 于 2012-9-6 21:44 编辑
stm32的启动文件有如下:
GBLL FreeRTOS
FreeRTOS SETL {TRUE}
Stack_Size EQU 0x00000400
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 0x00000200
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
我使用的片子是stm32f207, SRAM的大小为 128 + 4 Kbytes
问题1:
这是分配了一个堆栈, 大小为0x400和0x200, 如果我裸奔,局部变量是不是都存在这里啊,那剩下的SRAM干什么啊?
问题2:
如果我跑FREERTOS,那我创建了一个任务,比如说
xTaskCreate(ToggleLed4, "LED4", configMINIMAL_STACK_SIZE, NULL, LED_TASK_PRIO , NULL);
其中 #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )
那么这个任务使用的内存还是 启动文件的那个堆栈吗 即 大小为0x400和0x200的?
还是除了这个堆栈 剩下的那些SRAM?
问题3: 在问题2的基础上,为什么我最多只能分配十个任务?再开任务就开不了了 |