- 博客(11)
- 收藏
- 关注
原创 FLASH,SRAM段分布情况
程序编译后会生成不同的“段”(Section),这些段最终被组织到Flash中,各段的功能和存储方式不同:段类型存储内容Flash中的角色(代码段)编译后的程序指令(机器码)Flash的核心区域,存储函数的二进制代码,CPU可直接从Flash取指令执行(Cortex-M支持“从Flash执行”)。(只读数据段)常量(如字符串、const变量)保存在Flash中,运行时不可修改,直接从Flash读取。(初始化数据段)已初始化的全局/静态变量的“初始值”
2025-10-03 20:20:31
933
原创 图文并茂理解冯诺依曼架构和哈佛架构
想低成本、通用(能跑各种程序),用冯诺依曼架构(如你的电脑);想高速度、高实时性(如控制传感器、处理音频信号),用哈佛架构(如嵌入式设备)。
2025-09-18 22:12:52
1553
原创 ARM在压栈出栈使用局部变量中,R0,R1这些通用寄存器是这么使用的,有什么特殊的地方
R0-R3的特殊性在于:既是参数/返回值的核心通道,又属于“调用者保存”寄存器,因此压栈出栈的约束更宽松;而R4-R11是“被调用者保存”的局部变量专用寄存器,对压栈出栈的约束更严格。这种分工平衡了“参数传递效率”与“上下文安全性”。
2025-09-13 21:48:18
1251
原创 C语言面向对象---继承
C语言没有直接的“继承语法”,但可通过**“结构体嵌套”**模拟继承:让**子类结构体包含父类结构体作为第一个成员**,从而“复用”父类的数据和操作父类的函数。面向对象的“继承”是指:子类可以继承父类的属性和方法,减少重复代码,实现扩展。),也可通过“强制类型转换”作用于。一致),从而复用父类行为。
2025-09-12 21:08:57
390
原创 图文并茂理解结构体大小-内存对齐
当一个成员的末尾地址不满足下一个成员的“自身对齐值”时,需在两个成员之间插入“填充字节”,直到下一个地址满足对齐要求。不,9不是4的倍数,需填充3字节到12);成员的地址必须是4的倍数(如0、4、8),若下一个可用地址是1,则需填充3字节(地址1-3),将。:需对齐值4的地址(4的倍数),当前可用地址2(不满足),填充2字节(地址2-3),9不是4的倍数,需在末尾填充3字节(地址9-11),总大小=12字节(4的3倍)。:需对齐值4的地址,当前可用地址1(不满足),填充3字节(地址1-3),
2025-09-10 10:28:46
738
原创 图文并茂理解FreeRTOS队列集
队列集:允许任务同时等待多个队列或信号量的数据,当其中任何一个队列/信号量有数据可用时,任务都能被唤醒并处理。这解决了“单个任务需要等待多个事件源”的场景(无需为每个事件创建独立任务)。一个任务访问多个任务。
2025-09-07 11:47:57
1123
原创 FreeRTOS中队列集相关函数
FreeRTOS队列集操作摘要:1.队列集创建:xQueueCreateSet()创建队列集,指定最大监听对象数,返回句柄或NULL;2.对象添加:xQueueAddToSet()将队列/信号量加入队列集监听,返回成功/失败状态;3.对象移除:xQueueRemoveFromSet()从队列集移除指定对象;4.事件监听:xQueueSelectFromSet()阻塞等待任意对象触发,返回活动对象句柄。典型应用:通过单个调用同时监听多个队列和信号量的事件,实现高效任务同步。(149字)
2025-09-06 16:34:11
248
原创 以stm32103c8t6为例,理解底层读写寄存器原理,从硬件地址到寄存器名称
芯片厂商在头文件(如// GPIO 外设基地址(所有 GPIO 模块的起始地址)// GPIOA 基地址(在 APB2 总线基地址上偏移 0x0800)//算下来就是前面的0x40010800// GPIOB 基地址(同理)// ... 其他 GPIO 端口(GPIOC、GPIOD 等)此时GPIOA_BASE就等于硬件设计的0x40010800。硬件地址(0x4001080C)↑GPIOA_BASE(0x40010800) + ODR 偏移量(0x0C)↑。
2025-09-04 21:25:07
1773
原创 SP--MSP(Main Stack Pointer,主栈指针)和PSP(Process Stack Pointer,进程栈指针)
摘要:MSP和PSP的理解
2025-09-04 17:25:51
1006
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅