详解startup_M051.s

发布时间:2024-07-30  

在Keil新建的所有工程中,毫无例外地都包含startup_M051.s,如图19.1-1。

 

图19.1-1 startup_M051.s

 

该文件主要作用于上电时初始化单片机的硬件堆栈、初始化RAM、分配内存空间和跳转到主函数即main函数。硬件堆栈是用来存放函数调用地址、变量和寄存器值的;分配内存空间为异常提供更加快速的访问,减少中断延迟。如果不加载该startup_M051.s文件,编译的代码可能会使单片机不能正常工作。

那么什么是堆栈呢?在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈这两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。

堆,一般是在堆的头部用一个字节存放堆的大小,堆中的具体内容由程序员安排。

栈,在函数调用时,第一个进栈的是主函数中函数调用后的下一条指令的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,接着是函数中的局部变量,注意静态变量是不入栈的。当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址(后进先出),也就是主函数中的下一条指令,程序由该点继续运行。

虽然堆栈的说法是连起来叫,但是他们还是有很大区别的,连着叫只是由于历史的原因。

startup_M051.s文件并不复杂,只要用户有基本的汇编基础,就可以看懂,以下就给出该上电初始化文件的详细注解,可以作为参考,只作为选学内容。

 

程序清单19.1-1 startup_M051.s核心内容详解

 

Stack_Size      EQU     0x00000400        ;//栈大小定义为0x00000400字节

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;声明数据段STACK

;该数据段内存单元无初始化,可读写,并重新字对齐

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                AREA    STACK, NOINIT, READWRITE, ALIGN=3

Stack_Mem       SPACE   Stack_Size       ;//为栈分配内存空间,并初始化为0

__initial_sp

 

 

Heap_Size       EQU     0x00000000  ;//堆大小定义为0x00000000字节

 

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3

__heap_base

Heap_Mem        SPACE   Heap_Size        ;//为堆分配内存空间,并初始化为0

__heap_limit

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;声明数据段RESET

;该数据段内存单元只读

;功能:为所有Handler分配内存单元

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                PRESERVE8                ;//当前堆栈保持8字节对齐

                THUMB                    ;//THUMB模式

;//向量表映射到复位地址0

                AREA    RESET, DATA, READONLY

                EXPORT  __Vectors

 

__Vectors       DCD     __initial_sp              ; Top of Stack

                DCD     Reset_Handler             ; Reset Handler

                DCD     NMI_Handler               ; NMI Handler

                DCD     HardFault_Handler         ; Hard Fault Handler

                DCD     0                         ; Reserved

                DCD     0                         ; Reserved

                DCD     0                         ; Reserved

                DCD     0                         ; Reserved

                DCD     0                         ; Reserved

                DCD     0                         ; Reserved

                DCD     0                         ; Reserved

                DCD     SVC_Handler               ; SVCall Handler

                DCD     0                         ; Reserved

                DCD     0                         ; Reserved

                DCD     PendSV_Handler            ; PendSV Handler

                DCD     SysTick_Handler           ; SysTick Handler

 

                DCD     BOD_IRQHandler  

                DCD     WDT_IRQHandler  

                DCD     EINT0_IRQHandler

                DCD     EINT1_IRQHandler

                DCD     GPAB_IRQHandler 

                DCD     GPCDE_IRQHandler

                DCD     PWMA_IRQHandler 

                DCD     PWMB_IRQHandler 

                DCD     TMR0_IRQHandler 

                DCD     TMR1_IRQHandler 

                DCD     TMR2_IRQHandler 

                DCD     TMR3_IRQHandler 

                DCD     UART0_IRQHandler

                DCD     UART1_IRQHandler

                DCD     SPI0_IRQHandler 

                DCD     SPI1_IRQHandler 

                DCD     SPI2_IRQHandler 

                DCD     SPI3_IRQHandler 

                DCD     I2C0_IRQHandler 

                DCD     I2C1_IRQHandler 

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>