单片机开发中的内存溢出的状况

发布者:RadiantEyes最新更新时间:2024-07-15 来源: elecfans关键字:单片机开发  内存溢出  STM32 手机看文章 扫描二维码
随时随地手机看文章

在进行单片机开发的过程中,出现单片机内存溢出的小状况及总结:

  1. 循环遍历溢出

  2. 在初学C语言时可能会犯的错误,for循环遍历一个数组时,循环的次数超出了数组的长度。c语言编程时都要特别注意,细心。

  3. 各种string.h中的函数

    string.h提供了许多方便的处理字符串的函数,像是strcpy,strcmp。但是这些函数都是用于处理字符串的,它们的参数都只给了一块内存的首地址,函数通过’’字符来判断是否到了字符串结尾。如果用这些函数处理一块不含’’的内存(或者自己代码有误没把’’写进去),就会发生内存溢出的问题。

    推荐使用带n的函数,例如strncmp,memcpy,snprintf等,这样就可以配合sizeof来限制要处理的内存的长度,不发生越界。

  4. sizeof的使用

  5. sizeof反馈的是数据结构的字节数。在STM32上,sizeof(int)就是4,sizeof(float)也是4。不过最常用的还是sizeof自己定义的各种各样的结构体。

    但是我有一次不小心把sizeof(结构体类型名)写成了sizeof(结构体指针名)。这样sizeof就反馈的不是结构体占有的字节数了,而是一个指针占有的字节数(在32位单片机上是4个字节)。于是又导致了规划的内存空间长度比实际数据长度短,然后又溢出了。

  6. 多线程”合作

    遇到的bug是前后台系统数据处理速度不匹配造成的(我不知道前后台系统能否称为多线程,故打了引号)。

    两个模块之间,如果数据产生速度远大于数据处理速度,就会造成数据的积压然后爆内存(感觉有点像电磁场里面散度>0,算了我又在瞎想了),这种情况下,即使有再大的FIFO也不够,因为数据总是会爆满的。最好的办法就是降低数据产生速度,或者提高数据处理速度。


关键字:单片机开发  内存溢出  STM32 引用地址:单片机开发中的内存溢出的状况

上一篇:rt-thread操作系统下timer使用
下一篇:STM32的GPIO使用

推荐阅读最新更新时间:2026-03-11 10:41

修复内存溢出问题 Android 5.1.1来了
    要知道Android系统因为内存溢出问题导致手机越用越卡,不过这个好几个版本都没有修复的大BUG即将和我们say goodbye了。有消息称谷歌即将发布Android 5.1.1,而这个版本将重点修复安卓系统饱受人诟病的内存溢出问题。     有外媒报道称,在谷歌的Android工作室网站上,已经出现了Android 5.1.1的SDK工具包,现在开发者已经可以下载了。此外,我们还从中得知,最先拥有升级Android 5.1.1的资格的产品是Nexus 7和Nexus 9。   内存溢出是困扰安卓平台多年的BUG,当用户打开手机中的应用程序之后,系统会占用一部分RAM,而当用户关闭它们之后,这部分内存依然还会被
[手机便携]
stm32单片机串口开发
注意事项:软件平台:keil5 硬件:stm32f4xxxx 一、串口 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,但是传送速度比较慢。 二、库函数 1.串口参数初始化 typedef struc
[单片机]
<font color='red'>stm32</font><font color='red'>单片机</font>串口<font color='red'>开发</font>
《SLAM导航机器人基础》第三章:单片机STM32单片机概述和Keil开发环境配置
3.1 单片机概述 我们在第一章中了解了单片机概念,我们同学在大学中也会有单片机课程,一般选型经典的51单片机。单片机的处理器频率为8M,72M,168M等,处理器频率指的是处理器时钟频率,由此可得8M,72M,168M频率处理器的时钟周期分别为125us、13.8us、5.9us。假如我们有一条C++语句,最终需要10个时钟周期,则该语句耗时1250us、138us、59us。若我们运行1000行这样的语句,则需要1.25秒、0.138秒、0.059秒。由此可见,单片机处理速度较慢,适合处理任务负荷低的任务,同时要求我们程序尽量简洁,逻辑设计合理。除了频率,单片机的位数也不一样。有8位、16位、32位。8位指的是8个二进制位,可
[单片机]
《SLAM导航机器人基础》第三章:<font color='red'>单片机</font>与<font color='red'>STM32</font>:<font color='red'>单片机</font>概述和Keil<font color='red'>开发</font>环境配置
使用 VSCode 开发调试 STM32 单片机尝试
一、环境准备 硬件环境就是 STM32F103C8T6 核心板和 DAP 调试器,复杂的主要在软件部分。 调试时需要让gdb链接openocd,因此需要telnet工具。Windows下直接在Windows功能里打开telent client并重启就行 1.1_软件 VSCode 可以使用普通版或便携版,我使用的是大佬制作的便携版:https://portapps.io/app/vscode-portable/ STM32CubeMX 用来生成 Markfile 工程,已有工程模板的话不必须安装。使用 CubeMX 时需要用到 Java , Java 64位下载地址:https://java.com/en/download/m
[单片机]
使用 VSCode <font color='red'>开发</font>调试 <font color='red'>STM32</font> <font color='red'>单片机</font>尝试
STM32单片机有哪几种常见的开发环境?
STM32单片机是一款广泛应用于嵌入式系统开发的单片机,针对其开发,有以下几种常见的方式: STM32单片机有哪几种常见的开发环境? Keil MDK是一款广泛使用的单片机集成开发环境,支持多种单片机系列,包括STM32系列。它提供了强大的编辑、编译、调试和仿真工具,适合于嵌入式系统的开发。Keil MDK支持使用C语言和汇编语言进行开发,同时也提供了丰富的库函数和示例代码。 STM32CubeIDE是STMicroelectronics官方推出的一款集成开发环境(IDE),专门用于STM32系列单片机的开发。它基于Eclipse平台,集成了STM32CubeMX配置工具和STM32Cube HAL库,提供了丰富的功能
[单片机]
<font color='red'>STM32</font><font color='red'>单片机</font>有哪几种常见的<font color='red'>开发</font>环境?
使用DFU方案实现STM32单片机的高级开发
什么是 DFU DFU全称为Device Firmware update,是ST官方推出的一个通过USB接口进行IAP升级的方案,同串口ISP一样,他们都集成在了芯片内部的Bootloader区段,可以通过配置boot引脚来启动。(具体可参照ST文档:AN2606)。不过内置DFU的芯片大部分型号都比较新,如果你用的型号没有内置DFU程序,没关系我们也可以通过CubeMX来快速生成和移植一个DFU功能程序到你的Flash中来使用。 DFU方案完整的组件包括单片机DFU Demo代码、PC端升级程序、PC端Demo代码以及相关资料手册等。通过使用DFU方案,我们可以快速的集成升级功能到开发的产品中,同时还能够快速的开发与之配套的
[单片机]
使用DFU方案实现<font color='red'>STM32</font><font color='red'>单片机</font>的高级<font color='red'>开发</font>
STM32单片机小Tips(6):玩转IAR,开发STM32
  从51开始,单片机玩了很长时间了,有51,PIC,AVR等等,早就想跟潮流玩玩ARM,但一直没有开始,原因 -----不知道玩了ARM可以做什么(对我自己而言)。如果为学习而学习,肯定学不好。然后cortex-m3出来了,据说,这东西可以替代单片机,于 是马上开始关注。也在第一时间开始学习,可惜一开始就有点站错了队,选错了型(仍是对我自己而言)。我希望这种芯片应该是满大街都是,随便哪里都可以买得 到,但我选的第一种显然做不到。为此,大概浪费了一年多时间吧,现在,回到对我来说是正确的道路上来啦,边学边写点东西。   闲话多了些,就权当前言了。下面准备开始。   STM32单片机小Tips之RTC实践   BKP还没有搞完,
[单片机]
<font color='red'>STM32</font><font color='red'>单片机</font>小Tips(6):玩转IAR,<font color='red'>开发</font><font color='red'>STM32</font>
stm32和电机开发(从mcu到架构设计)
有过外资企业工作经验的同学应该都有这样的感觉,好像老外都很擅长做架构设计。与此相比较,国内的同学似乎更擅长编写代码。同样的设计,老外比较喜欢画图,文字部分有,但也是文字和图各一半;国内同学写文档比较少,更喜欢写代码,就算写文档也是文字和表格占了一大部分。 细细想来,出现这种差别,既有文化的原因、差异,也有产业分工的原因,同时也有东西方工作方法的差别。西方比较看重的是沟通、协同、接口定义清楚;东方讲究分工,功能完整,快速推进。 就拿架构设计来说,不管是业务层面的,还是技术层面,画图是少不了的。但是画图是为了构建模型,挖掘出问题的主要矛盾、主要流程,不是为了画图而画图。如果架构设计只是停留在纸面上,落不
[单片机]
<font color='red'>stm32</font>和电机<font color='red'>开发</font>(从<font color='red'>mcu</font>到架构设计)
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved