
嵌入式高级技术提升
文章平均质量分 82
橘猫.exe
喜欢c/c ++ stm32/51单片机 嵌入式Linux。“舞台再大,你不上台,永远只是一个观众”;“平台再好,你不参与,永远是局外人”;“能力再大,你不行动,你只能看别人成功”。没有人会关心你付出多少,努力撑的累不累,捧得痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【STM32串口】使用状态机接收HEX数据包的编程思维
1.HEX模式/十六进制模式/二进制模式:以原始数据的形式显示文本模式/字符模式:以原始数据编码后的形式显示。原创 2025-04-04 09:17:39 · 796 阅读 · 0 评论 -
【STM32】Flash详解
Flash 闪存是总称,包含 NOR 和 NAND 两种技术。NAND Flash是 Flash 的子集,因容量大、成本低,成为消费电子存储的绝对主流。NOR Flash在小容量、代码直接执行的场景不可替代。因此,当人们提到“Flash 闪存”时,若未明确说明,通常默认指NAND Flash;但在嵌入式开发或特定工业领域,“Flash”可能特指 NOR Flash,需结合上下文区分。支持 XIP(Execute-In-Place)NOR Flash 允许 CPU直接读取并执行代码。原创 2025-04-04 09:16:03 · 2615 阅读 · 0 评论 -
【STM32】内存管理
如何在LCD 上面实现SD卡文件浏览?需要读取所有文件名到内存,然后显示到LCD。一般的方法,是定义一个数组来存储所有文件名1,需要知道最大文件名的长度。255字节。2,需要知道文件个数。100?1000?10000?如果没有内存管理:则要定义一个:uint8_t filenametbl[10000][255];的数组!占用2550K字>节内存内存管理,是指软件运行时对MCU内存资源的分配和使用的技术。(内存的大管家)其最主要目的是:如何高效,快速的分配,并且在适当的时候释放和回收内存资源。原创 2025-02-23 21:56:38 · 926 阅读 · 0 评论 -
【C语言】运算符优先级
复合运算符有:+=、-=、*=、/=、%=、>>=、<<=、&=、|=、^=在更复杂的表达式中,这两种递增方式的选择可能会影响程序的逻辑和结果。&&(逻辑与) ||(逻辑或)这里说一些需要注意的事项。原创 2025-02-27 10:30:00 · 568 阅读 · 0 评论 -
【嵌入式内存分配】数据段、 BSS 段、代码段、堆和栈段
*数据段是程序中用于存放已初始化的全局变量和静态变量的一块内存区域。**这些变量在程序编译时就已经确定了其大小和初始值,并在程序加载到内存时,这些初始值会被复制到数据段中相应的位置。数据段的内容在程序运行期间通常保持不变,除非程序通过代码显式地修改这些变量的值。数据段属于静态内存分配,意味着在程序运行之前,操作系统或编译器就已经为数据段分配了足够的内存空间。与堆栈段和堆段不同,数据段的内存分配和释放是由编译器在编译时确定的,而不是在程序运行时动态分配的。转载 2025-02-27 11:15:00 · 950 阅读 · 0 评论 -
【嵌入式开发】位运算的进阶技巧
在嵌入式系统中,位运算是一种高效且常用的操作手段,它允许开发者在不使用复杂数据结构或额外内存的情况下,对硬件寄存器、状态标志等进行精确控制。使用按位或运算()可以将一个数的特定位设置为1,而不影响其他位。这常用于设置硬件寄存器的某个功能位。例如,要设置某个寄存器的第n位为1,可以使用如下操作:寄存器 |= (1 << n)。1.2 清除标志位使用按位与运算()和取反运算()可以将一个数的特定位清零,而不影响其他位。这常用于关闭硬件寄存器的某个功能。例如,要清除某个寄存器的第n位,可以使用如下操作:寄存器转载 2025-02-26 10:30:00 · 672 阅读 · 0 评论 -
【嵌入式开发】static关键字的用法
用于函数内部的局部变量时,这些变量在函数调用结束后不会消失,而是保留其值,直到程序结束。用于全局变量时,它限制了变量的作用域,使其只能在定义它的源文件中访问。如果初始化器是一个常量表达式,那么静态变量的初始化可以在编译时完成。关键字可以用于任何变量声明,指示编译器在程序的整个生命周期内为该变量分配存储空间。用于函数时,它限制了函数的作用域,使其只能在定义它的源文件中调用。这通常用于定义固定大小的数组,其大小在编译时已知。关键字是实现封装和隐藏实现细节的重要工具,它有助于模块化编程和避免命名冲突。原创 2025-02-26 08:45:00 · 315 阅读 · 0 评论 -
【嵌入式开发】extern关键字的用法
关键字来声明全局变量,这样包含头文件的源文件就可以访问这些变量,而不需要在每个源文件中都定义它们。关键字可以有效地管理程序中不同模块之间的变量和函数的可见性和访问权限,是实现程序模块化的重要手段。关键字支持模块化编程,允许将程序分解为多个模块,每个模块可以独立编译,然后在链接时组合在一起。关键字用于在一个文件中声明一个在另一个文件中定义的全局变量。关键字也用于在一个文件中声明在另一个文件中定义的函数。关键字声明同一个全局变量或函数,可以避免在每个文件中都定义它们,从而防止重复定义的错误。原创 2025-02-25 11:30:00 · 392 阅读 · 0 评论 -
【嵌入式开发】const在变量不同位置的含义
在C语言中,const是一个关键字,用于声明常量,即在程序运行期间其值不能被修改的变量。使用const可以提高代码的可读性和可维护性,同时允许编译器进行更多的优化和错误检查。const。原创 2025-02-24 14:52:29 · 374 阅读 · 0 评论 -
【C语言】预处理器
C 语言编译器在编译程序之前,会先使用预处理器(preprocessor)处理代码。预处理器首先会清理代码,进行删除注释、多行语句合成一个逻辑行等工作。然后,执行#开头的预处理指令。预处理指令可以出现在程序的任何地方,但是习惯上,往往放在代码的开头部分。每个预处理指令都以#开头,放在一行的行首,指令前面可以有空白字符(比如空格或制表符)。#和指令的其余部分之间也可以有空格,但是为了兼容老的编译器,一般不留空格。所有预处理指令都是一行的,除非在行尾使用反斜杠,将其折行。指令结尾处不需要分号。1.原创 2025-02-24 14:51:10 · 1403 阅读 · 0 评论 -
【C语言】结构体字节对齐
在C语言中,结构体(struct)的字节对齐(也称为内存对齐或数据对齐)是一种内存布局的优化手段,它涉及到结构体成员在内存中的排列方式。字节对齐的主要目的是提高内存访问的效率,因为大多数现代处理器在访问按照其字长(如32位或64位)对齐的内存地址时速度更快。自然对齐(成员对齐):每个成员变量的起始地址都是其大小的整数倍。例如,如果一个结构体包含一个int(假设int是4字节)和一个char(1字节),那么int成员的起始地址应该是4的倍数,而char成员的起始地址可以是任意地址。结构体对齐。原创 2025-02-24 14:49:43 · 1108 阅读 · 0 评论