05 2024 档案

摘要:1、实际上,对于在STM32F103这类资源紧缺的单片机芯片中: 代码段保存在Flash上,直接在Flash上运行(当然也可以重定位到内存里) 数据段暂时先保存在Flash上,然后在使用前被复制到内存里(只读数据段(RO data)不复制) 函数入口地址、函数参数、临时变量、const修饰的局部常量 阅读全文
posted @ 2024-05-12 10:57 流水江湖 阅读(63) 评论(0) 推荐(0) 编辑
摘要:这些步骤将源代码转换成可以在目标硬件上执行的机器代码。以下是这个过程的一般描述: 预处理(Preprocessing):源代码(如 .c、.cpp、.s 等)首先被预处理。预处理器处理源文件中的宏定义、条件编译指令、包含指令(如 #include)等。预处理器的输出通常是一个 .i 或 .ii 文件 阅读全文
posted @ 2024-05-12 09:50 流水江湖 阅读(264) 评论(0) 推荐(0) 编辑
摘要:名词: LR = Load region上面只有1个,实际可以有多个。 ER = Execution region1个LR中可以有多个ER。 ER = Execution region1个LR中可以有多个ER。 input section1个ER中可以有多个Input section。 首先,LR_ 阅读全文
posted @ 2024-05-12 00:35 流水江湖 阅读(292) 评论(0) 推荐(0) 编辑
摘要:1,全局变量和全局静态变量 a、全局变量:全局变量存放在静态存储区,作用域是全局(对比下面添加static),整个声明周期都可以使用,其他文件如需要使用,需要添加extern b、全局静态变量 (static):分配的内存与全局变量一样,也是在静态存储内存上,其生命周期也是与整个程序同在的,从程序开 阅读全文
posted @ 2024-05-11 23:34 流水江湖 阅读(1709) 评论(0) 推荐(0) 编辑
摘要:对RAM分区的了解 在一个STM32程序代码中,从内存高地址到内存低地址,依次分布着栈区、堆区、全局区(静态区)、常量区、代码区,其中全局区中高地址分布着.bss段,低地址分布着.data段,其分布图如下: 各区特点一、栈区(stack) 临时创建的局部变量存放在栈区。函数调用时,其入口参数存放在栈 阅读全文
posted @ 2024-05-08 13:33 流水江湖 阅读(1487) 评论(0) 推荐(0) 编辑
摘要:在使用keil开发STM32应用程序时,点击Build后在Build Output窗口中经常会有如下信息: 以前一直好奇这几个参数和实际使用的STM32芯片中Flash和SRAM的对应关系,于是上网搜了一圈,做如下总结: 这些参数的单位是Byte 图中几个参数分别代表 Code:代码的大小 RO:常 阅读全文
posted @ 2024-05-08 09:34 流水江湖 阅读(355) 评论(0) 推荐(0) 编辑
摘要:编译一个程序,出现下面的信息: 明明程序没有什么内容,为什么变量大小就有RW+ZI=52+1836=1888字节大小了呢,就已经使用了1888字节的SRAM空间。让我们打开map文件: 可以看到每个文件所使用的SRAM大小,比如delay文件使用了4个字节,地址从0x20000014到0x20000 阅读全文
posted @ 2024-05-08 09:25 流水江湖 阅读(1143) 评论(0) 推荐(0) 编辑
摘要:代码下载:https://gitee.com/jhembedded/flmparse 写这篇博客的目的是因为最近在做一个STM32的离线编程器,离线下载需要用到FLM文件的下载算法,所以实现了一下提取FLM文件中下载算法的C程序。 有关ELF格式的详细说明可查看这个文件:http://flint.c 阅读全文
posted @ 2024-05-03 14:01 流水江湖 阅读(420) 评论(0) 推荐(0) 编辑
摘要:1.*.FLM的本质其实就是*.axf,它也是一段可执行代码。 2.它是ARM工具链的一部分, /***********************************************************************/ /* This file is part of the 阅读全文
posted @ 2024-05-03 13:57 流水江湖 阅读(318) 评论(0) 推荐(0) 编辑
摘要:#include <stdio.h> // 定义一个枚举类型来表示光电开关的状态 typedef enum { SWITCH_OPEN, SWITCH_CLOSED } SwitchState; // 定义一个结构体来记录光电开关传感器的状态 typedef struct { SwitchState 阅读全文
posted @ 2024-05-02 10:27 流水江湖 阅读(22) 评论(0) 推荐(0) 编辑
摘要:01. 位带概述位带操作简单的说,就是把每个比特膨胀为一个 32 位的字,当访问这些字的时候就达到了访问比特的目的,比如说 GPIO 的 ODR 寄存器有 32 个位,那么可以映射到 32 个地址上,我们去访问这 32 个地址就达到访问 32 个比特的目的。这样我们往某个地址写 1 就达到往对应比特 阅读全文
posted @ 2024-05-01 17:59 流水江湖 阅读(35) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示