![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM3底层
payphone15423
这个作者很懒,什么都没留下…
展开
-
STM32底层(ARM芯片)启动全过程。(编译,链接,启动)
这些是我慢慢收集来的博客,集中做个整理,建议慢慢阅读,了解STM32的整个底层。原创 2023-12-21 19:54:00 · 925 阅读 · 0 评论 -
ARM 重映射和映射
图中可以看出把0x00000000地址上的存储单元映射到了新的地址0x00000007上(重映射)。寄存器映射:对外设的操作原本是对外设的某些寄存器配置配置,但是把这个寄存器“链接”到地址上,就相当于对这个地址处的存储器操作就等价于对外设的操作,叫寄存器映射。在ARM微控制器设计中,给物理存储器分配逻辑地址的过程就称为存储器映射。把某个存储器(系统最开始默认的地址的存储器)重映射(重新分配)到一个新地址,对新地址的访问就相当于对系统最开始默认地址访问。ARM芯片中有些物理存储单元的地址可以根据设置变换。转载 2023-11-12 20:33:32 · 257 阅读 · 0 评论 -
大小端模式
在Cortex-M3中一个地址处存一个字节,对于一个32位的字型数据,其最低的八位存低地址,最高的八位存在高地址,这种叫做小端模式,这样比较方便人的思维。Cortex-M3内核默认是小端模式。原创 2023-11-12 21:09:38 · 20 阅读 · 0 评论 -
ARM中字对齐和半字对齐,以及小尾模式
展开成32位地址表示最低的四位分别是0000b,0100b,这就是字对齐,最后两位是0,如果是八字节对齐,则最后的三位都是0.比如存放0x12345678在地址0x0000 00000 中,实际上会把0x78放在地址0x0000 0001处,把0x12放在地址0x0000 0004处。这样外部访问一个字的时候就可以 mov R0, [0x0000 0000],以字的低地址作为字的地址。在Cortex-M3中,默认的小端模式,就是一个word型数据是32位,低八位存放在低地址中。原创 2023-11-12 21:28:52 · 414 阅读 · 0 评论 -
CMSIS 的构成
第三个是core_cm3.h 其中有内核内设的寄存器地址(内核外设的配置结构体定义),然后是内在函数的声明以及NVIC的函数,尤其NVIC的配置函数是标准的,不容许修改。启动文件startup_stm32f10x_md.s 是有关中断向量表的配置,复位启动函数,然后堆栈的配置。第四个 stm32f10x.h 设备外设访问的头文件,其中定义了各个外设的寄存器地址,还有配置的数据结构,第七八个是stm32f10x_it.c 以及声明文件,这是中断函数的具体实现。原创 2023-11-13 21:57:32 · 126 阅读 · 0 评论 -
STM32 启动文件
这是栈的初始化函数,但是在上面的里面这里面没有说清楚,我的理解就是,__user_initial_stackheap作为初始化堆栈的函数,就只是往R0,R1,R2装入参数的,然后一个跳转指令 BX,就实现了,在_main函数应该会调用这个初始化函数。这个里面对于启动文件的讲解很透彻了,就说下最后我的里面,原创 2023-11-27 22:00:45 · 345 阅读 · 0 评论