启动文件代码讲解-基于hmm的语音识别系统的matlab仿真

时间:2024-07-31 04:45:15
【文件属性】:

文件名称:启动文件代码讲解-基于hmm的语音识别系统的matlab仿真

文件大小:29.31MB

文件格式:PDF

更新时间:2024-07-31 04:45:15

STM32 F103

15.3 启动文件代码讲解 1. Stack—栈 1 Stack_Size EQU 0x00000400 2 3 AREA STACK, NOINIT, READWRITE, ALIGN=3 4 Stack_Mem SPACE Stack_Size 5 __initial_sp 开辟栈的大小为 0X00000400(1KB),名字为 STACK,NOINIT 即不初始化,可读可 写,8(2^3)字节对齐。 栈的作用是用于局部变量,函数调用,函数形参等的开销,栈的大小不能超过内部 SRAM 的大小。如果编写的程序比较大,定义的局部变量很多,那么就需要修改栈的大小。 如果某一天,你写的程序出现了莫名奇怪的错误,并进入了硬 fault 的时候,这时你就要考 虑下是不是栈不够大,溢出了。 EQU:宏定义的伪指令,相当于等于,类似与 C 中的 define。 AREA:告诉汇编器汇编一个新的代码段或者数据段。STACK 表示段名,这个可以任 意命名;NOINIT表示不初始化;READWRITE表示可读可写,ALIGN=3,表示按照 2^3对 齐,即 8 字节对齐。 SPACE:用于分配一定大小的内存空间,单位为字节。这里指定大小等于 Stack_Size。 标号__initial_sp紧挨着 SPACE语句放置,表示栈的结束地址,即栈顶地址,栈是由高 向低生长的。 2. Heap 堆 1 Heap_Size EQU 0x00000200 2 3 AREA HEAP, NOINIT, READWRITE, ALIGN=3 4 __heap_base 5 Heap_Mem SPACE Heap_Size 6 __heap_limit 开辟堆的大小为 0X00000200(512字节),名字为 HEAP,NOINIT即不初始化,可读 可写,8(2^3)字节对齐。__heap_base 表示对的起始地址,__heap_limit 表示堆的结束地 址。堆是由低向高生长的,跟栈的生长方向相反。 堆主要用来动态内存的分配,像 malloc()函数申请的内存就在堆上面。这个在 STM32 里面用的比较少。 1 PRESERVE8 2 THUMB PRESERVE8:指定当前文件的堆栈按照 8 字节对齐。 THUMB:表示后面指令兼容 THUMB 指令。THUBM 是 ARM 以前的指令集,16bit, 现在 Cortex-M 系列的都使用 THUMB-2 指令集,THUMB-2 是 32 位的,兼容 16 位和 32 位 的指令,是 THUMB 的超集。


网友评论