STM32查看内存占用的map文件解析

3 篇文章 0 订阅
3 篇文章 0 订阅

STM32查看内存占用的map文件解析

双击工程名尽可打开xxx.map文件,里面主要显示了文件及函数使用内存的大小

程序内存分析

在这里插入图片描述

在stm32中,通常堆向高地址增长(向上增长),栈向低地址增长(向下增长);

堆:是用户调用malloc()时申请的内存;
栈:是提供给局部变量使用的,即由c语言机制自动申请和释放;

1.2 flash、ROM、RAM的区别

在这里插入图片描述

在stm32中flash就是ROM,掉电数据不会丢失;(通常保存着text段、Code、Ro-data、Rw-data)
RAM就是运行内存,掉电数据就丢失;(通常保存着堆、栈、bss段、data段、ZI-data、RW-data)

1.3 通常stm32在keil里编译完后被分成5个内存段(堆、栈、bss段、data段、text段)

以下存储在RAM
堆区:在启动文件里分配,作为用户主动申请时的空间,如调用malloc()
栈区:在启动文件里分配,作为局部变量自动申请和释放空间的变量(也有说是编译器分配的空间)
全局区和静态区(bss+data):存放全局变量,静态变量的区域;其中bss段(ZI-data)存放未初始化的全局变量和静态变量;data段(RW-data)存放初始化后的全局变量和静态变量;

以下存储在flash(text段)
文字常量区:宏,常量字符串等存放区域;(RO-data)
程序代码区:程序代码块存放区域;(Code)

引用参考:stm32中堆、栈、flash、ROM、RAM、bss段、data段、text段、Code、Ro-data、 ZI-data、RW-data简介

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据提供的引用内容,我们可以了解到MIDI是一种数字音乐标准格式,而STM32是一种微控制器,那么STM32 MIDI文件解析就是指STM32微控制器对MIDI文件进行解析的过程。在STM32中,可以使用MIDI库来解析MIDI文件,该库提供了一些函数和数据结构,可以方便地读取MIDI文件中的音符、控制参数等信息,并将其转换为MIDI消息进行处理。在解析MIDI文件时,需要注意MIDI文件的格式,一般有标准MIDI文件和扩展MIDI文件两种格式,需要根据不同的格式进行相应的解析处理。 下面是STM32 MIDI文件解析的一些步骤: ```c // 代码类型:C语言 // 读取MIDI文件头信息 void readMidiHeader(FILE *fp, MidiHeader *header); // 读取MIDI文件中的音符和控制参数等信息 void readMidiTrack(FILE *fp, MidiTrack *track); // 解析MIDI消息 void parseMidiMessage(uint8_t *message, uint8_t *status, uint8_t *data1, uint8_t *data2); // 处理MIDI消息 void handleMidiMessage(uint8_t status, uint8_t data1, uint8_t data2); // 主函数 int main(void) { // 打开MIDI文件 FILE *fp = fopen("example.mid", "rb"); if (fp == NULL) { printf("Failed to open MIDI file.\n"); return -1; } // 读取MIDI文件头信息 MidiHeader header; readMidiHeader(fp, &header); // 读取MIDI文件中的音符和控制参数等信息 MidiTrack track; readMidiTrack(fp, &track); // 解析MIDI消息并处理 uint8_t message[3]; uint8_t status, data1, data2; for (int i = 0; i < track.length; i += track.events[i].length) { memcpy(message, track.events[i].data, 3); parseMidiMessage(message, &status, &data1, &data2); handleMidiMessage(status, data1, data2); } // 关闭MIDI文件 fclose(fp); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值