
嵌入式C语言开发
文章平均质量分 70
本专栏专注于嵌入式 C 语言开发,从基础的硬件架构认知到深入的嵌入式系统编程,通过实际案例与代码分析,帮助读者掌握嵌入式 C 语言的编程技巧,包括但不限于微控制器编程、嵌入式软件设计模式、内存管理和实时操作系统应用等,提升在嵌入式领域的开发能力
魂兮-龙游
科技
展开
-
C语言:怎样将一个结构体数据全部清零
所有方法都可以有效清零结构体的数据,memset 和大括号初始化是最常用且高效的方式。原创 2025-02-28 08:30:00 · 496 阅读 · 0 评论 -
C语言:二维数组在内存中是怎么存储的
在 C 语言中,二维数组是按 行主序(row-major order) 存储的,即所有的行按照顺序连续存储在内存中。对于一个 mxn 的二维数组 arr[m][n],数组的第一个元素 arr[0][0] 存储在内存的起始位置,紧接着是 arr[0][1]、arr[0][2] 等,直到 arr[0][n-1]。然后,存储的是 arr[1][0]、arr[1][1],以此类推,直到 arr[m-1][n-1]。原创 2025-02-21 08:30:00 · 792 阅读 · 0 评论 -
C语言:vprintf
vprintf 是 C 标准库中的一个函数,具体由标准库提供的stdio.h头文件实现,它用于格式化输出并打印到标准输出(通常是控制台或终端)。与 printf 不同,vprintf 的参数列表是通过 va_list 类型的变量传递的,允许动态传递不定数量和类型的参数。vprintf 通常与可变参数函数配合使用。原创 2025-02-11 10:09:01 · 750 阅读 · 0 评论 -
C语言:实现传入形参数量可变的函数(va_list)
可变参数函数的声明方式与普通函数的声明方式相似,不同之处在于它会使用三个特殊的宏来处理可变数量的参数。具体来说:va_list:是一个类型,用于存储可变参数的类型。va_start:是一个宏,初始化 va_list 类型的变量,准备读取可变参数。va_arg:是一个宏,访问传递给函数的每个参数。va_end:是一个宏,清理 va_list,防止内存泄漏。原创 2025-02-11 09:38:57 · 917 阅读 · 0 评论 -
C语言:stm32中一个整形数据是怎么存储的
在 STM32(基于 ARM Cortex-M 架构)的系统中,存储方式。也就是说,对于一个整型(例如 32 位int),它的**最低有效字节(LSB)最高有效字节(MSB)**会存储在内存的高地址处。原创 2025-02-05 13:42:07 · 168 阅读 · 0 评论 -
C语言:如果一行写的太长怎么换行
在 C 语言里,如果一行代码过长,通常有以下几种方法来使其在源码中“换行”,从而提高可读性:原创 2025-02-05 13:40:10 · 929 阅读 · 0 评论 -
C语言:将四个八位无符号数据拼接成32位的float数据
在 STM32H7 这样的嵌入式系统中,将四个 8 位无符号数据(uint8_t)拼接成一个 32 位的float数据,通常需要考虑字节顺序(或STM32 默认使用(Little Endian)存储方式,即最低有效字节(LSB)存储在低地址,高位在高地址。原创 2025-02-05 13:36:43 · 766 阅读 · 0 评论 -
C语言:把两个16位的数据合成32位浮点型数据
把两个 16 位的数据(uint16_t)合成一个 32 位的floatfloat和,这两个数据存储了一个 32 位float的低 16 位和高 16 位。你可以按以下方法将它们合成一个float。原创 2025-02-05 13:31:33 · 928 阅读 · 1 评论 -
C语言:把32位的float数据拆分成两个16字节的数据
要将一个 32 位的float数据拆分为两个 16 位的数据,需要将 32 位的float拆解成 4 个 8 位字节,然后分别合并成 16 位的数据。原创 2025-02-05 13:28:46 · 547 阅读 · 0 评论 -
C语言:0x1234在内存中的存储方式
小端模式下,0x1234被存储为0x34(低字节)在低地址,0x12(高字节)在高地址。大端模式下,0x1234被存储为0x12(高字节)在低地址,0x34(低字节)在高地址。在实际应用中,通常会使用小端模式(尤其是在 x86、x86-64 架构中)。原创 2025-02-05 13:22:27 · 332 阅读 · 0 评论 -
C语言:无符号16位数据小端模式转换为大端模式
要将无符号 16 位数据从小端模式转换为大端模式,可以通过交换字节的方式来实现。原创 2025-02-05 13:21:07 · 312 阅读 · 0 评论 -
C语言:取出32位数据的高十六位
右移 16 位:通过将数据右移 16 位,可以清除低 16 位,得到高 16 位。类型转换为uint16_t:确保结果只包含 16 位数据。这个操作对于任何 32 位无符号整数都适用,能够正确提取出高 16 位。原创 2025-02-05 13:09:42 · 410 阅读 · 0 评论 -
C语言:将数字转换为数字字符串
要将数字转换为字符串,在 C 语言中,可以使用标准库函数sprintf或snprintf来完成。它们能够将数字转换为字符串,按照指定的格式输出。原创 2025-02-05 13:02:11 · 874 阅读 · 0 评论 -
在stm32中C语言编写的程序中,一个整形数据是怎么存储的,高位在前还是低位在前
在STM32(基于ARMCortex-M架构)的系统中,存储方式。也就是说,对于一个整型(例如32位int),它的最低有效字节(LSB)最高有效字节(MSB)会存储在内存的高地址处。原创 2025-01-20 11:10:51 · 632 阅读 · 0 评论 -
C语言中将32位的指针转换为8位的指针
将一个32位指针转换为8位指针,可以通过类型转换(typecasting)来实现。32位指针通常表示的是某个对象的地址,而8位指针(uint8_t*)则表示字节的地址。在将32位指针转换为8位指针时,只需要将其强制转换为uint8_t*类型。原创 2025-01-20 09:06:00 · 825 阅读 · 0 评论 -
C语言中的printf、sprintf、snprintf、vsnprintf 函数
理解 printf、sprintf、snprintf 和 vsnprintf 这几个函数对于有效地处理字符串输出和格式化非常重要,sprintf安全性低,容易发生溢出风险,具有安全隐患,所以这个函数学习意义不是很大,了解即可,接下来介绍其他三个函数的用途、区别以及如何在实际编程中使用,包括代码示例和解释。原创 2025-01-02 20:42:36 · 1864 阅读 · 0 评论 -
函数指针和指针函数的区别
【代码】函数指针和指针函数的区别。原创 2024-12-25 10:32:03 · 582 阅读 · 0 评论 -
嵌入式STM32-C语言中__IO的含义
这里__IO 表示 volatile,这是标准 C 语言中的一个修饰字原创 2024-12-18 15:57:14 · 1254 阅读 · 0 评论 -
C语言里面的size_t是什么意思
size_t是一种无符号整数类型(unsigned integer type),用于表示对象的大小或计数。C 语言其他标准库头文件C++ 语言其他标准库头文件根据C 标准(C99 及之后的版本)和C++ 标准(C++11 及之后的版本)size_t类型typedef定义的无符号整数类型用途:用于表示对象的大小(以字节为单位)或数组的索引等// 具体实现依赖于平台和编译器注意。原创 2024-12-31 11:23:53 · 886 阅读 · 0 评论 -
C语言中的隐式转换问题
隐式转换是指编译器在编译期间自动进行的数据类型转换,无需程序员显式地进行类型转换(如使用强制类型转换符(type)表达式求值:不同类型的操作数参与运算时,编译器会自动将它们转换为兼容的类型。函数调用:实际参数与形参类型不一致时,编译器会进行类型转换。赋值操作:将一个类型的值赋给另一个类型的变量时,编译器会进行类型转换。示例int a = 5;double c;// 隐式转换:int 自动转换为 doublec = a + b;// 输出:c = 7.500000return 0;原创 2025-01-02 21:20:40 · 977 阅读 · 0 评论 -
C语言中的va_list
在 C 语言中,va_list是一个专门用于处理(variadic function)的类型。可变参数函数指的是像这样使用省略号(...)来接收不定数量或类型参数的函数。要想在函数内部获取这些“不定参数”,就要用到va_list及其相关的宏和函数。原创 2025-01-02 20:13:14 · 978 阅读 · 0 评论