ST
文章平均质量分 52
石马马户
这个作者很懒,什么都没留下…
展开
-
关于中断和异常的一些理解
异常向量表的理解,每个异常都有对应的异常号码即中断号,根据发生的异常号去异常向量表(数组)里面执行对应的异常服务函数。这段话的表述哪里有问题?总体上是正确的,但可以进一步澄清和细化几个方面,以增强对异常向量表的理解。原创 2024-09-24 16:08:33 · 324 阅读 · 0 评论 -
stm32启动文件流程
在看启动文件里的汇编代码时候有一些疑惑,这里记录一下。:这行代码通过SPACE指令分配了 512 字节的内存,这段内存的起始地址就是Heap_Mem的地址,表示堆的实际内存空间。:这个符号是在Heap_Mem之前定义的,它的值就是Heap_Mem的地址(即堆的起始地址)。:这是在堆分配的空间之后定义的符号,指向堆的末尾,即,用来表示堆的终止地址。原创 2024-09-24 15:45:55 · 354 阅读 · 0 评论 -
norflash和nandflash
CPU可以直接访问NOR Flash,并且能够从中执行代码。这使得NOR Flash在嵌入式系统中,特别是在需要高可靠性和快速启动的应用场景中,成为一种理想的存储器选择。与NOR Flash不同,NAND Flash 的访问方式和特性有所不同。尽管NAND Flash在存储容量和成本方面具有优势,但其访问方式与CPU的直接访问存在一些区别。NAND Flash的特点:适合大容量、低成本的数据存储,但不能直接被CPU访问或执行代码。它需要通过控制器管理,并且系统启动时通常需要将代码加载到RAM中运行。原创 2024-08-26 14:23:14 · 550 阅读 · 0 评论 -
程序计数器(PC)
作用:PC(Program Counter)是一个专用寄存器,用于存储当前正在执行的指令的地址。不过在ARM架构中,它通常指向下一个要取指令的地址,而不是当前正在执行的指令。 ARM7的PC行为: 在ARM7中,由于使用了三级流水线结构(取指Fetch、译指Decode、执行Execute),所以PC的值等于当前执行的指令地址加8。这是因为在执行当前指令时,下一条指令和再下一条指令已经在流水线中被取指和译指。 在ARM7中,PC通常映射到寄存器R15。原创 2024-08-23 14:50:43 · 462 阅读 · 0 评论 -
Cortex-M3复位序列
举例来说,如果你的堆栈区域在 0x20007C00‐0x20007FFF 之间,那么 MSP 的初始值就必须是。向量表跟随在 MSP 的初始值之后——也就是第 2 个表目。在此之前初始化 MSP 是必需的,因为可能第 1 条指令还没执行就会被 NMI 或是其。因为 CM3 使用的是向下生长的满栈,所以 MSP 的初始值必须是堆栈内存的末地址加 1。态下执行,所以向量表中的每个数值都必须把 LSB 置 1(也就是奇数)。对于不同的开发工具,需要使用不同的格式来设置 MSP 初值和复位向量——有些则由。原创 2024-08-01 10:56:07 · 200 阅读 · 0 评论