Proteus仿真驱动STM32F103R6 GPIO控制LED流水灯

告别开发板!用Proteus仿真STM32点亮第一个LED(STM32CubeMX配置GPIO详解) 本文详细介绍了如何使用STM32CubeMX和Proteus仿真STM32点亮LED的全流程,包括环境准备、GPIO配置、代码编写和电路仿真。通过这一实战教程,开发者无需实体开发板即可掌握STM32基础开发技能,特别适合嵌入式系统初学者。 阅读详情

1. 环境准备与工具安装

作为一个玩了十多年嵌入式开发的老工程师,我深知仿真工具在项目开发中的重要性。今天我要分享的是如何使用Proteus来仿真STM32F103R6的GPIO控制LED流水灯,这个案例特别适合刚接触STM32的初学者。

先说说需要准备的软件环境。Keil MDK-ARM是必须的,我习惯用Keil uVision5版本,稳定性很好。安装过程很简单,去官网下载安装包,一路next就行,记得同时安装STM32F1系列的设备支持包。有时候网络不好下载支持包很慢,我可以分享个小技巧:先离线下载好对应的PACK文件,然后直接导入Keil,这样能省不少时间。

Proteus我用的是8.9版本,其实从8.0以上都可以。安装完成后要检查一下是否有STM32F103R6的模型库,如果没有的话需要单独下载元件库。我记得有一次帮学生调试,就是因为元件库不全,仿真时老是报错,折腾了半天才发现是这个问题。

硬件方面其实不需要实际开发板,这就是仿真的好处。但为了理解电路原理,最好知道LED共阳极接法的特点:所有LED的正极接在一起接到VCC,负极分别接到MCU的GPIO引脚。当GPIO输出低电平时LED点亮,输出高电平时熄灭。这种接法比共阴极更省IO口,在实际项目中很常见。

2. 工程创建与硬件设计

打开Proteus,新建一个工程,我习惯命名为"STM32_LED_Waterflow"。在元件库中找到STM32F103R6,这是Cortex-M3内核的芯片,性价比很高。然后找四个LED灯,我一般用LED-RED,看起来更醒目。还需要一个电阻排,用来限流,阻值我通常设为220欧姆。

接线很重要,我画原理图时有个习惯:先把所有元件摆好位置,STM32放中间,LED排成一排。四个LED的阳极都接到VCC,阴极分别接到PB8、PB9、PB10和PB11。这里要注意引脚编号不能错,有一次我接错了PB12,仿真时LED就是不亮,排查了好久才发现问题。

电阻要串联在LED和GPIO之间,虽然仿真时不加电阻也能工作,但实际电路中必须加,否则会烧坏LED或IO口。我建议即使仿真也要养成好习惯,把实际工程中需要的元件都加上。

电源部分别忘了加直流电源,STM32需要3.3V供电。Proteus中可以直接用电源符号,设置好电压值就行。还有晶振电路,虽然流水灯实验不用外部晶振也能跑,但最好把8MHz晶振和两个22pF电容也画上,这样更接近实际项目。

检查电路时要特别注意连线有没有交叉或虚接,Proteus的连线功能很智能,但有时候鼠标操作不准会导致连接不良。我有个小技巧:画完线后用鼠标拖动元件,如果线跟着动说明连接好了,如果线不动就要重新连接。

3. Keil工程配置与代码编写

打开Keil uVision5,新建工程,选择STM32F103R6作为目标器件。这里有个坑要注意:有时候器件列表里找不到具体的型号,这时候要确保安装了正确的Device Family Pack。我建议直接用STM32F103C8,因为内核相同,外设也差不多,兼容性更好。

工程设置中要选对调试器,虽然我们是用Proteus仿真,但Keil里还是要配置好。在Debug选项里选Use Simulator,这样可以直接在Keil里软件仿真。Output选项里一定要勾选Create HEX File,因为Proteus需要加载HEX文件才能运行程序。

代码编写是关键部分。我先包含必要的头文件:

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"

然后定义延时函数,这里我改进了一下原代码的延时函数:

void Delay(uint32_t nCount)
{
    for(; nCount != 0; nCount--)
    {
        __nop(); __nop(); __nop(); __nop();
        __nop(); __nop(); __nop(); __nop();
    }
}

这样写比用while循环更准确,因为__nop()是汇编指令,执行时间固定。在实际项目中,我更喜欢用SysTick定时器来做精确延时,但仿真时用简单延时就够了。

GPIO初始化要配置时钟和引脚模式:

GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

主循环里的流水灯逻辑我做了优化:

while(1)
{
    uint16_t patterns[] = {0xFEFF, 0xFDFF, 0xFBFF, 0xF7FF};
    for(int i = 0; i < 4; i++)
    {
        GPIO_Write(GPIOB, patterns[i]);
        Delay(0xFFFF);
    }
}

这样写更直观,直接对应每个LED点亮的模式。0xFEFF是二进制1111111011111111,表示PB8输出低电平,第一个LED点亮。

4. 编译与调试技巧

代码写完后要编译,我习惯用Build Output窗口查看编译信息。常见的错误有头文件路径不对、库函数未定义等。有时候Keil会报一些莫名其妙的警告,大多数情况下可以忽略,但如果出现红色错误就要仔细排查。

编译成功后,在Objects文件夹里会生成HEX文件。我建议每次编译后都检查一下文件生成时间,确保是最新版本。有一次我调试了半天发现效果不对,最后才发现是忘记重新编译,加载的还是旧版的HEX文件。

在Keil里也可以软件仿真,点击Debug按钮进入仿真模式。我经常用单步执行来观察GPIO寄存器的值变化。在Peripherals菜单里选择GPIOB,可以实时查看引脚状态。这个方法很适合调试复杂的逻辑。

如果仿真时发现LED不亮,首先要检查GPIO输出寄存器值。右键点击寄存器值,选择Binary显示,这样能看到每一位的状态。比如看到OBR8是0,说明PB8输出低电平,对应的LED应该点亮。

有时候仿真速度很慢,可以调整Proteus的仿真设置。在System菜单里选择Animation Options,把仿真速度调到最快。如果还是慢,可能是代码里延时太长了,可以适当减小延时参数。

5. Proteus仿真详细步骤

回到Proteus,双击STM32芯片,在弹出的属性窗口里选择Program File,找到刚才生成的HEX文件。这里要注意文件路径最好不要有中文,否则可能加载失败。我习惯把HEX文件直接放在工程目录下,这样不容易丢失。

还有一个重要的设置是Crystal Frequency,要设为8MHz,和实际芯片一致。如果这里设错了,仿真速度会和实际不符。其他设置保持默认就可以了。

点击仿真运行按钮,这时候应该能看到LED开始流水点亮了。如果没反应,先检查电源是否接通,有时候忘记画电源符号会导致芯片不工作。然后检查Reset电路,Proteus会自动处理复位,但最好还是加上复位按钮和电容。

仿真运行时可以右键点击LED,选择Animation选项,这样能更清楚地看到状态变化。我习惯把仿真速度调到75%左右,这样观察效果最好。如果想看波形,可以在Debug菜单里选择Digital Oscilloscope,添加要观察的引脚。

有时候仿真会卡死,这时候需要停止仿真重新开始。Proteus的仿真稳定性还不错,但如果代码里有死循环或者硬件配置错误,还是会导致仿真失败。我建议每做一次修改就保存一次工程,防止意外崩溃丢失工作。

6. 常见问题与解决方案

新手最常遇到的问题是HEX文件加载失败。这时候要检查Keil的Output配置,确保勾选了生成HEX文件选项。还有一个常见问题是芯片型号不匹配,Proteus里的STM32F103R6要和Keil里选的型号一致。

GPIO配置错误也很常见。推挽输出模式(GPIO_Mode_Out_PP)是正确的选择,如果误设为开漏输出(GPIO_Mode_Out_OD),LED会亮度不足或者不亮。输出速度设为什么值影响不大,但最好按实际需求设置。

延时时间不合适会导致流水灯速度太快或太慢。可以通过调整Delay函数的参数来改变速度。我一般先用较大的参数,然后慢慢减小到合适值。在实际项目中,最好用定时器来实现精确延时。

仿真时LED不亮的排查步骤:首先看芯片是否供电,然后检查GPIO配置是否正确,再看输出寄存器值是否变化。有时候Proteus的显示刷新有问题,可以停止仿真再重新开始。

还有一个隐藏的问题:Proteus的元件模型可能不完美。我遇到过几次仿真结果和实际硬件不一致的情况,这时候要以实际硬件为准。仿真毕竟只是模拟,不能完全替代实物调试。

7. 功能扩展与进阶应用

基本的流水灯实现后,可以尝试一些扩展功能。比如改变流水方向,从左到右然后从右到左循环。代码可以这样修改:

while(1)
{
    // 从左到右
    for(int i = 0; i < 4; i++)
    {
        GPIO_Write(GPIOB, patterns[i]);
        Delay(0xFFFF);
    }
    
    // 从右到左
    for(int i = 3; i >= 0; i--)
    {
        GPIO_Write(GPIOB, patterns[i]);
        Delay(0xFFFF);
    }
}

还可以实现呼吸灯效果,用PWM控制亮度。虽然STM32F103R6的通用IO不支持硬件PWM,但可以用软件模拟:

for(int brightness = 0; brightness < 100; brightness++)
{
    GPIO_Write(GPIOB, 0x0000); // 全部点亮
    Delay(brightness);
    GPIO_Write(GPIOB, 0xFFFF); // 全部熄灭
    Delay(100 - brightness);
}

另一个有趣的扩展是加入按键控制。在Proteus里添加一个按钮,接到PA0引脚。代码中要配置PA0为输入模式,然后检测按键状态来改变流水灯模式。

中断方式检测按键更高效:

void EXTI0_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line0) != RESET)
    {
        // 切换流水灯模式
        mode = (mode + 1) % 3;
        EXTI_ClearITPendingBit(EXTI_Line0);
    }
}

这些扩展练习能帮助深入理解STM32的各种功能。我建议初学者每个实验都亲手做一遍,不要只是看代码。实际动手过程中会遇到各种问题,解决问题的过程就是最好的学习。

8. 实际项目中的应用技巧

在这个简单的流水灯项目中,其实包含了很多实际项目的开发技巧。比如模块化编程,我把GPIO配置、延时函数、主逻辑都分开写,这样后期维护很方便。

代码版本管理也很重要。我习惯用Git来管理工程文件,每次重大修改都提交一个版本。这样如果改出了问题,可以很容易回退到之前的稳定版本。实际项目中这是必须的,一个人开发时可能感觉不到重要性,但团队协作时没有版本管理简直寸步难行。

调试技巧在实际项目中特别有用。我养成了用LED指示程序状态的习惯,比如不同的闪烁模式表示不同的错误状态。这样即使没有调试器,也能大概知道程序运行到哪一步了。

功耗优化是实际项目必须考虑的。流水灯实验时GPIO速度设为50MHz没问题,但在电池供电的项目中,要适当降低GPIO速度来省电。不用的IO口最好设为模拟输入模式,这样功耗最低。

EMC设计也要提前考虑。虽然仿真时看不出来,但实际项目中LED线路要加滤波电容,防止电磁干扰。流水灯的变化速度也不能太快,否则可能会产生电磁兼容性问题。

最后说说代码优化。初学者写的代码可能效率不高,但首先要保证可读性。等项目稳定后再考虑优化,比如用寄存器操作代替库函数,用位带操作代替读-修改-写操作。但不要过早优化,清晰的代码比高效的代码更重要。

STM32F103R6启动文件选择指南:如何避免Proteus仿真中的常见错误 本文详细解析了STM32F103R6启动文件选择在Proteus仿真中的关键作用,帮助开发者避免常见错误。通过分析芯片特性、Keil工程配置及Proteus仿真特殊考量,提供了一套完整的解决方案,确保仿真顺利进行。重点介绍了启动文件选择、宏定义设置及调试技巧,适用于嵌入式开发者和STM32初学者。 阅读详情

相关推荐

Proteus与Keil联合仿真STM32F103R6的LED控制实战

本文详细介绍了如何使用Proteus与Keil进行STM32F103R6的LED控制联合仿真。从环境搭建、芯片选型、电路设计到代码实现和调试技巧,全面解析了开发过程中的关键步骤和常见问题解决方案,帮助开发者高效完成嵌入式系统仿真开发。

weixin_42713608的博客 122

Proteus仿真驱动STM32F103R6实现GPIO流水灯控制

本文详细介绍了使用Proteus仿真软件驱动STM32F103R6微控制器实现GPIO流水灯控制的完整流程。从环境配置、硬件电路设计到代码编写与仿真调试,逐步解析LED控制原理与STM32的GPIO操作,为嵌入式开发初学者提供实用的仿真实践指南。

rose2的博客 995

Proteus 8.9 + Keil 联合仿真STM32F103R6:从环境配置到LED灯闪烁(避坑指南)

本文详细介绍了使用Proteus 8.9与Keil MDK联合仿真STM32F103R6的全流程,包括环境配置、工程创建、电路设计及LED控制实现。重点解决了联合仿真中的常见问题,提供了避坑指南和高级调试技巧,帮助开发者高效完成嵌入式系统开发与验证。

weixin_29168813的博客 334

从二进制舞步到视觉盛宴:探秘GPIO位操作的艺术与科学

本文深入探讨了STM32F103R6的GPIO位操作原理与实践,通过Proteus仿真环境详细解析了LED控制的核心技术。从二进制基础到高级位操作技巧,展示了如何通过精准的寄存器配置和算法设计,实现从简单的流水灯到复杂的灯光效果,为嵌入式开发者提供了完整的GPIO位操作艺术与科学指南。

a1b2c的博客 156

用STM32F103R6和Proteus搞定单片机课程设计:一个完整交通灯仿真项目复盘

本文详细介绍了如何使用STM32F103R6和Proteus完成单片机课程设计中的交通灯仿真项目。从硬件搭建、软件设计到高级功能实现,提供了避开常见错误的实用技巧和代码优化方法,帮助学生在短时间内高质量完成项目。

weixin_42550597的博客 164

Proteus仿真STM32流水灯避坑指南:解决时钟不准、固件缺失与JLink烧录问题

本文详细解析了Proteus仿真STM32流水灯过程中常见的时钟不准、固件缺失与JLink烧录问题,提供了从时钟校准到烧录验证的完整解决方案。通过寄存器配置技巧和版本兼容性分析,帮助开发者高效避坑,实现仿真与实物开发的无缝衔接。

weixin_33716941的博客 471

Proteus仿真STM32F103R6 GPIO控制LED流水灯设计

本文详细介绍了使用Proteus仿真STM32F103R6 GPIO控制LED流水灯的完整设计流程。从硬件设计思路、开发环境搭建,到GPIO初始化代码详解和流水灯逻辑实现,逐步讲解如何通过Proteus进行STM32仿真,并提供了常见问题调试技巧与功能扩展建议,帮助嵌入式初学者快速掌握GPIO控制与仿真技术。

bush的博客 465

基于STM32与Proteus的汽车盲区监测系统仿真与开发实战

嵌入式系统开发中,传感器数据采集与实时控制是核心基础。其原理在于通过微控制器(如STM32)的GPIO、定时器等外设,精确读取传感器信号,并依据预设逻辑驱动执行机构。这项技术的价值在于能够以低成本、高可靠的方式实现环境感知与自动化响应,广泛应用于智能家居、工业控制及汽车电子等领域。在汽车安全场景中,盲区监测系统正是其典型应用,它利用超声波传感器探测侧后方障碍物距离,通过STM32进行数据处理与分级报警决策。本文聚焦于如何运用Proteus仿真工具,高效完成此类系统的方案验证与调试,有效规避了传统开发中硬件成

weixin_30565199的博客 353

嵌入式开发实战:Proteus 8与STM32 GPIO配置实现LED流水灯设计

本文详细介绍了使用Proteus 8和STM32进行嵌入式开发,实现GPIO配置控制LED流水灯设计的实战教程。从环境搭建、电路设计、代码编写到仿真调试,逐步讲解如何利用STM32的GPIO外设驱动LED,并提供了常见问题排查方法和项目扩展建议,帮助初学者快速掌握嵌入式开发基础。

y2z3a4b5c的博客 503

STM32寄存器驱动LED流水灯:从仿真到实物的全流程实践

本文详细介绍了STM32寄存器驱动LED流水灯的全流程实践,从寄存器编程基础到Proteus仿真调试,再到实物烧录与优化。通过具体代码示例和避坑指南,帮助开发者掌握STM32寄存器操作核心技巧,实现高效的LED控制方案。特别针对仿真异常、硬件连接等常见问题提供解决方案。

weixin_42524226的博客 313

STM32F103洗衣机控制器课程设计全套:Proteus仿真+Keil工程+LED/步进电机实时演示

一套面向单片机实践教学的洗衣机控制方案,主控芯片为STM32F103R6,全部功能在Proteus中完成硬件级仿真。支持6档水位检测(通过独立按键模拟)、8种预设洗衣程序(已实现标准洗和轻柔洗两种完整流程),具备启动、暂停、停止操作逻辑。运行状态通过LED直观指示:进水、排水、电机正转/反转、脱水等动作一一对应;滚筒转动由步进电机模块模拟,配合PWM调速实现不同洗涤节奏;水位档位、当前程序编号、运行阶段(洗涤/漂洗/脱水)均通过LED数码管或LED阵列动态显示。软件基于STM32标准外设库开发,结构清晰,含

252

别只做流水灯了!用STM32F103R6+Proteus仿真一个带紧急优先和手动调时的交通灯系统

本文详细介绍了如何使用STM32F103R6单片机和Proteus仿真环境构建一个具备紧急优先和手动调时功能的智能交通灯系统。通过状态机设计、定时器中断和模块化编程三大核心技能,实现复杂交通灯控制逻辑,适合电子工程学习者和开发者参考。

weixin_42522575的博客 393

proteus仿真--基于stm32f103r6的数字电压表设计

作品:proteus仿真--基于stm32f103的数字电压表设计 平台:proteus 和 keil 技术实现:利用AD转换功能实现两路数字电压检测功能并显示到数码管上。 资源内容:proteus仿真电路图一份,keil平台的STM32程序一份。 使用方法:1、在proteus中点击STM32器件,然后选择Program File选项,再选择hex文件路径,点击运行就有数据了。 2、调节两侧的电阻器可以改变采集的电压大小。 3、已完成串口的编程,用于调试,串口与数码管会实时显示当前采集的电压数值。 使用人群:有需要使用proteus仿真STM32实现两路AD转换功能的人。

STM32F103的流水灯点亮版本1(寄存器地址操作)

每个 GPI/O 端口有两个 32 位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个 32位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个 32 位置位/复位寄存器(GPIOx_BSRR),一个 16 位复位寄存器(GPIOx_BRR)和一个 32 位锁定寄存器(GPIOx_LCKR)。(1)点击project,选择new μvision project,创建工程名为lsd,点击保存,点击保存然后弹出的芯片选择,我们选择芯片STM32F103RB,然后点击ok。

QingQiuZuiMeng的博客 487

MS1030超声波流量计电路实战:如何用15ps精度优化水表设计(附配置代码)

本文深入探讨了如何利用MS1030超声波流量计芯片实现15ps高精度测量,以优化水表设计。文章从系统误差分配出发,详细解析了硬件电路设计要点、SPI通信配置及核心优化技巧,如利用可编程偏置电压和8回波累加功能来提升抗干扰能力与测量稳定性,并附有实用的配置代码示例。

svm4gardener的博客 332

自动驾驶仿真(五)—— 基于Carsim、Prescan、Simulink的联合仿真

自动驾驶仿真五——基于Carsim、Prescan、Simulink的联合仿真1. 联合仿真流程2. CarSim联合仿真配置要点3. Prescan联合仿真配置要点4. Carsim、Prescan、Simulink联合仿真结果5. 参考学习的书目教材 博主前面的博文已经介绍了Carsim和Prescan各自与Matlab/Simulink的相关联合仿真应用实例,并且论述过几款软件各自的优势及用法,CarSim适合动力学模型的建立,PreScan适合行车场景的搭建,Simulink适合控制算法的设计及信号

zhudj08的博客 1万+

探索STM32的奇幻世界:Proteus仿真流水灯实验全解析

探索STM32的奇幻世界:Proteus仿真流水灯实验全解析 【下载地址】Proteus仿真STM32流水灯实验例程分享 本资源文件提供了详细的步骤和例程,帮助用户在Proteus仿真环境中进行STM32流水灯实验。通过本例程,用户可以学习如何使用Proteus仿真STM32微控制器,实现LED灯的流水效果 ...

gitblog_06560的博客 448

AC360变频器使用案例

AC360变频器使用案例!

QING_BOSS的博客 517

嵌入式开发实战:Proteus 8与STM32 GPIO配置实现多LED流水灯设计

本文详细介绍了使用Proteus 8和STM32进行GPIO配置实现多LED流水灯设计的嵌入式开发实战。从环境搭建、电路设计到代码实现与仿真调试,逐步讲解如何配置STM32的GPIO控制LED流水效果,并提供了延时优化和常见问题解决方案,适合嵌入式开发初学者学习实践。

y7z8a的博客 78

OpenCV视频防抖算法实现与优化指南

本文详细解析了如何使用OpenCV实现视频防抖算法。通过特征点检测与光流跟踪估算帧间运动,利用滑动平均平滑运动轨迹,并应用仿射变换重塑视频帧。文章提供了完整的代码实现、参数调优指南及黑边处理等优化技巧,帮助开发者高效处理手持拍摄等场景下的视频抖动问题。

weixin_29062823的博客 339

chembl_webresource_client 包数据接口下载chembl数据库;ZINC数据库下载、simles获取

点击进去https://zinc.docking.org/subclasses/kinase/predictions/,然后下载sdf模式,这里可以转化simles格式,如果下载csv里面没有包含simles。参考:https://github.com/chembl/chembl_webresource_client/blob/master/demo_wrc.ipynb。参考:https://zinc.docking.org/这是网页搜索查看,16条数据。这个数据这下载特别慢。

weixin_42357472的博客 3046

STM32 Proteus仿真LED音乐喷泉PWM电机速度流水灯-0007

STM32 Proteus仿真LED音乐喷泉PWM电机速度流水灯-0007 硬件组成:STM32F103R6单片机 +8个LED灯+直流电机+L298N电机驱动+电位器模拟音量大小 1.使用电位器模拟音量大小。 2.单片机内部ADC采集电位器电压,电压越大说明音量越大。 3.音量大小决定了电机的速度以及LED亮灯速度。越大电机速度越快亮灯越多。 4.使用PWM调节电机速度。

zhaxiaobian_er的博客 1144

小龙虾OpenClaw卸载全攻略,彻底清理缓存和配置,干净无残留!

不想要的小龙虾OpenClaw怎么彻底卸载?🦞本文教你如何彻底的卸载OpenClaw⚡️,Windows/macOS/Linux通用,干净无残留🧹

XiaoqiangClub的博客 313

实战篇001. 【STM32F1】基于Proteus + CubeMX + Keil的GPIO输入仿真与按键消抖

本文详细介绍了基于STM32F1的GPIO输入仿真与按键消抖实战教程,涵盖Proteus电路设计、STM32CubeMX工程配置、Keil代码编写及联合调试全流程。重点解析了机械按键消抖的软件实现方案,包括延时检测和定时器中断两种方法,并提供了常见问题排查指南,帮助开发者快速掌握STM32仿真开发技巧。

weixin_30684743的博客 456

SAP 与 Palantir 合作全景解析:这不是普通集成,而是把 ERP、数据语义层、云迁移与企业级 AI 串成一条价值链

SAP与Palantir的战略合作聚焦企业数字化转型核心痛点,通过深度技术整合构建"数据-决策-执行"闭环。合作包含四大主线:云迁移连续性保障、SAP业务数据云与Palantir平台对接、联合工程开发、高监管行业优先落地。技术实现上采用SAP认证插件,支持双向数据交互和实时业务动作触发。该合作突破了传统ERP系统局限,将业务语义与AI执行相结合,特别适合制造业供应链优化、财务争议处理等高价值场景,为企业在云迁移过程中实现业务连续性与智能化升级提供新范式。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 192

Android面试必考问题:Android性能优化最全面试题及参考答案(8万字长文)

Android 中的 OOM(Out Of Memory,内存溢出)异常是指应用程序在运行过程中,由于申请的内存空间超过了系统所能提供的最大内存限制而导致的错误。在 Android 中,内存泄漏是指应用中的某些对象在不再被使用后,仍然被其他对象持有引用,导致这些对象无法被垃圾回收器回收,从而占用内存空间,随着时间的推移可能会导致应用内存不足,甚至崩溃。在一次开发 Android 应用的过程中,我发现应用在长时间运行后会出现内存占用过高的情况,导致应用变得卡顿,甚至可能会被系统强制关闭。

大模型大数据攻城狮的专栏 2531
上一篇: SOME/IP-SD 服务发现与事件订阅机制全解析
下一篇: STM32外设实战配置与避坑指南——从江协教程到项目落地
github5actions
博客等级 码龄1天 0粉丝 1824原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值