自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 stm32 系统堆栈与freertos堆栈

【摘要】本文解析STM32嵌入式开发中的堆栈管理机制。裸机环境下,Keil启动文件统一定义栈区(用于函数调用/中断处理)和堆区(手动内存分配),以字(4字节)为单位配置大小。FreeRTOS系统采用双栈机制:系统栈(MSP)专用于中断,由启动文件定义;任务栈(PSP)从FreeRTOS堆区动态分配,存储任务局部变量等,其总空间由configTOTAL_HEAP_SIZE配置。两种环境下堆栈管理存在本质差异,开发者需注意裸机堆区与RTOS堆区的独立性。

2025-06-08 16:31:43 728

原创 嵌入式程序中 Flash、RAM、ROM、堆、栈、静态区、全局区 详解

本文简明解析嵌入式开发中的七大核心存储概念:Flash用于存储程序代码和常量(非易失);RAM存放运行时变量和数据(易失);ROM通常指代可读不可写的Flash;栈自动管理局部变量(后进先出);堆需手动分配释放动态内存;静态区(.data/.bss)保存全局/静态变量;全局区是静态区的概念延伸。文末用"程常初→Flash,变数活→RAM,短临→栈,长租→堆,永住→静"口诀帮助记忆各存储区域特性,为嵌入式开发人员提供清晰的存储管理框架认知。

2025-06-06 11:14:29 818

原创 stm32f103cbt6 bootloader

该微控制器具有128KB的闪存(flash)和20KB的SRAM,以及多种外设,例如ADC(模数转换器)、DAC(数字模拟转换器)、定时器、PWM(脉宽调制器)、USART(通用同步/异步串行收发器)等。stm32f103cbt6 flash空间为128KB,我这里给分配5KB的flash,bootloader使用0~4页flash空间,大小0x13FF(5KB),若是不够自己根据项目分配即可。stm32f103c8t6 的bootloader也可以按照这个来做,因为两者只有flash部分不同而已。

2025-06-01 17:49:05 376

原创 C: 别小看 Bootloader,主程序90%的‘莫名其妙’都是它惹的祸

在嵌入式开发中,Bootloader 往往被视为“只负责启动一下”的辅助模块,但事实上,它的行为直接影响主程序的稳定性和可预测性。:Bootloader 没有关闭中断、栈未清理或没有正确跳转,主程序一运行就 HardFault。:Bootloader 初始化了串口、SPI、GPIO 却没还原状态,主程序接管时信号全乱。:Bootloader 和主程序写在了重叠的 Flash 区域,导致启动后崩溃或数据错误。:Bootloader 的 OTA 逻辑处理不严谨,写错 APP 区或未正确更新标志位。

2025-05-27 19:29:23 280

原创 C:“程序在运行到某个函数后出现卡顿或中止现象,甚至函数内部的调试信息(如 printf)都未输出,可能的原因有哪些?

如果函数递归过深或局部变量占用内存过大,容易导致堆栈溢出,程序会直接进入异常。如果你使用调试器,断点设置不当或调试连接不稳定也可能导致程序停在某点。

2025-05-27 08:49:20 114

原创 爬虫步骤总结

爬虫的总步骤概括,其余就是在这个的基础进行扩展而已。

2023-07-07 14:00:15 621 1

原创 C语言中scanf在int类型数组中要添加&,而字符数组中的字符串输入不用添加&

而对于字符数组scanf("%s",数组名)来说,我要输入字符串的话,就不需要“&”,因为你输入的字符串会自动寻址,依次存入。但是如果你用的是单个字符的话scanf("%c",&数组名[下标]),就需要添加“&”,因为得寻址,依次添加即可。int数组,是scanf("%d",&数组名[下标]),&寻址符号,在它的后面添加变量,意思是找到变量的地址然后依次进行存储。

2023-07-07 11:25:45 2822 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除