IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32启动文件学习 -> 正文阅读

[嵌入式]STM32启动文件学习

2021/08/09
STM32启动文件学习
启动文件作用:

  1. 初始化堆栈指针SP
  2. 初始化PC指针
  3. 初始化中断向量表
  4. 配置系统时钟
  5. 调用C库—main函数进入到主程序

启动文件使用的ARM汇编指令:
EQU:等于
AREA:汇编一个代码段或数据段
STACK:段名,可更改
NIINIT:可初始化
READWRITE:可读可写
ALIGH=3:2的3次方8字节对齐
SPACE:分配内存空间
PRESERVE8:当前文件堆栈需要按照8字节对齐
EXPOERT:声明一个标号具有全局属性,可被外部文件使用
DCD:以字为单位分配内存,要求4字节对齐,并要求初始化这些内存
PROC:定义子程序,与ENDP成对使用,表示子程序结束
WEAK:弱定义(编译器指令),优先使用外部文件定义的标号
IMPORT:声明标号来自外部文件,和C中EXTERN类似
B:跳转到一个标号
END:到达文件的末尾,文件结束

1.配置栈:变量(局部、全局),函数调用
Stack_Size EQU 0x00000800

            AREA    STACK, NOINIT, READWRITE, ALIGN=3

Stack_Mem SPACE Stack_Size
__initial_sp //紧挨着SPACE语句放置,表示栈的结束地址,即栈顶地址,栈是由高向低生长的。
入栈由高地址往低地址偏移
2.配置堆:主要用于动态内存的分配,malloc()
Heap_Size EQU 0x00000200;0x10000000;0x00000200

            AREA    HEAP, NOINIT, READWRITE, ALIGN=3

__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit

            PRESERVE8
            THUMB

3.初始化中断向量表
AREA RESET, DATA, READONLY
EXPORT __Vectors
EXPORT __Vectors_End
EXPORT __Vectors_Size
定义一个数据段,名为RESET,只读。并声明_Vectors、__Vectors_End、__Vectors_Size这三个标号具有全局属性,可供外部的文件调用。

4.复位程序; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
LDR R0, =SystemInit //从存储器中加载字到R0寄存器中
BLX R0 //跳转到由寄存器给出的地址,并根据寄存器的LSE确定处理器的状态,还要把跳转前的下条指令地址保存到LR
LDR R0, =__main
BX R0
ENDP //跳转到由寄存器/标号给出的地址,不用返回

  1. 中断服务函数
  2. 堆栈初始化,这个由C库函数—main来实现的
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章           查看所有文章
加:2021-08-10 23:10:33  更:2021-08-10 23:10:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 5:19:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码