- 博客(32)
- 收藏
- 关注
原创 strstr!!!
`strstr(str, substr1)` 返回指向 `str` 中 `"World"` 首次出现位置的指针。- `strstr(str, substr2)` 返回指向 `str` 中 `"test"` 首次出现位置的指针。- `strstr(str, substr3)` 未找到 `"example"`,返回 `NULL`。- `ptr1 - str` 计算 `"World"` 在 `str` 中的起始位置。- `ptr2 - str` 计算 `"test"` 在 `str` 中的起始位置。
2025-03-22 22:09:12
237
原创 `sscanf` 和 `scanf` 的区别
`sscanf` 和 `scanf` 都是 C 语言中用于从字符串中读取格式化输入的函数,但它们的主要区别在于输入源的不同。
2025-03-22 22:05:31
547
原创 MinGW-w64的下载与安装
地址:https://github.com/niXman/mingw-builds-binaries/releases。官网地址:https://www.mingw-w64.org/
2025-03-12 22:27:53
407
原创 在终端里ping一个地址?物联网
Ping命令通过发送ICMP(Internet Control Message Protocol)请求回显数据包到目标地址,并等待接收回显回应数据包来工作。这个过程可以帮助网络管理员和技术人员诊断网络故障,例如检测网络连通性、分析网络速度、确定潜在的故障点等12。
2025-02-25 20:53:19
277
原创 printf和 vprintf的区别
printf和vprintf都是 C 语言标准库中的函数,用于将格式化的数据输出到标准输出设备(通常是终端或控制台)。然而,它们在处理可变参数列表方面存在一些关键区别。
2025-02-22 21:24:29
368
原创 strcpy与strncpy作为复制函数的用法与区别
是 C 语言标准库中的一个函数,用于将一个字符串复制到另一个字符串中。它的原型定义在 头文件中,用法如下: 函数会将 指向的字符串(包括终止的空字符 )复制到 指向的位置。复制完成后, 将指向一个新的字符串,该字符串与 相同。需要注意的是, 不会自动为目标字符串分配内存。因此,在使用 之前,必须确保 指向的内存区域足够大,能够容纳源字符串及其终止的空字符。输出:虽然 本身会复制整个字符串,但你可以通过限制目标数组的大小来间接实现部分复制(不过这样做通常不安全,因为 不会检查目标数组的大小)。
2025-02-22 20:52:19
327
原创 嵌入式中高低电平、 0和1、set和reset的关系
set(置位)和reset(复位)是数字电路和可编程逻辑控制器(PLC)中常用的两种操作。set操作:用于将某个逻辑变量或寄存器状态设置为高电平(逻辑“1”)。在PLC中,这通常通过SET指令来实现。置位操作可以激活输出设备、触发特定的逻辑流程或改变状态标志等。reset操作:用于将某个逻辑变量或寄存器状态复位为低电平(逻辑“0”)。在PLC中,这通常通过RST指令来实现。复位操作可以取消之前置位操作的效果,使相关设备或逻辑回到初始或未激活状态。
2025-02-22 19:39:12
622
原创 HAL_UART_Receive和HAL_UARTEx_ReceiveToIdle用于UART通信接收的区别
和都是STM32 HAL库中用于UART通信接收的函数,但它们的工作原理、应用场景以及使用方式存在显著的区别。
2025-02-21 21:25:00
476
原创 使用 ^= 对每个字节进行异或操作完成校验和
的校验和,该校验和是所有字节的异或(XOR)操作的结果。这种方法常用于简单的错误检测,因为即使是数据中的一个小变化也会导致异或结果的不同。计算一个命令字符串(
2025-02-21 21:07:31
240
原创 在嵌入式中使用sprintf把两个变量拼接在一起
函数时,存在缓冲区溢出的风险,如果目标数组不够大以容纳格式化后的字符串,就会导致未定义行为。在更安全的编程实践中,可能会考虑使用。类型,但在这个上下文中,我们期望它是一个指向足够大字符数组的指针,以便存储格式化后的字符串。指向的数组足够大,以容纳格式化后的字符串以及 null 终止符。函数,它允许指定目标数组的大小,从而防止缓冲区溢出。需要注意的是,调用者必须确保。函数会将格式化后的字符串写入。
2025-02-21 20:47:32
311
原创 GPS定位上NMEA和CASIC协议的区别
NMEA协议定义:NMEA(National Marine Electronics Association)是一个为航海电子设备制定通信协议的组织,其最为知名的标准是NMEA 0183协议。背景:成立于上世纪中期,随着航海技术的不断发展,NMEA应运而生,旨在通过制定一系列标准和规范,保障设备间的兼容性及数据互通性。CASIC协议定义:CASIC协议是中国航天工业集团下属的某研究所制定的协议,主要应用于多模卫星导航接收机中,用于规范不同系统间的数据交互和通信方式。背景。
2025-02-21 20:06:49
576
原创 memcpy 与 memset 的区别与用法
memset 是 C 和 C++ 标准库中的一个函数,用于将一块内存区域的内容全部设置为指定的值。这个函数定义在 <string.h> 头文件中(在 C++ 中,也可以使用 <cstring>,它是 <string.h> 的 C++ 版本,但内容几乎相同)。
2025-02-21 19:53:32
105
原创 如何在VS CODE中使用keil的编译与烧录功能
在嵌入式领域中大家一般使用keil作为开发工具,因为他的编译与烧录功能是其他工具中不具备的。但随着大模型的开发以及vscode软件编写便捷度上普遍被码农们所青睐,而keil作为开发工具依旧是呆呆笨笨的感觉,所以在vscode上也就有了插件的出现与使用。下面来介绍一个keil assistant的安装与使用 ,当然 Embedded IDE 也具有同样的功能,但这里不做详述。
2025-02-20 20:03:26
335
原创 在stm32中使用注册回调函数的方法去执行中断动作
总结,这段代码展示了如何在STM32微控制器上设置一个定时器中断,并在定时器溢出时执行一个用户定义的回调函数。这种方法使得处理定时事件变得更加灵活和模块化。这段代码是用于在STM32微控制器上设置一个定时器中断,并在定时器溢出时执行一个回调函数。
2025-01-01 19:57:00
362
原创 在stm32gpio传参设置中使用bool开关led
布尔变量,用于在函数调用之间保持 LED 的状态。静态变量在函数第一次被调用时初始化,并且在其后的函数调用中保持其值。函数或同一文件的其他函数中可见和可修改,因为它被声明为静态。函数用于设置 LED 的状态,而。
2024-12-30 11:12:14
220
原创 二进制中MSB(Most Significant Bit)和LSB(Least Significant Bit)的区别
MSB(最高有效位)定义:MSB是二进制数中最重要的位,它决定了整个数值的大小和符号。位置:在一个字节(8位)中,MSB通常位于最左侧,即第7位(从0开始计数)。LSB(最低有效位)定义:LSB是二进制数中最不重要的位,但它仍然对数值有影响,只是影响较小。位置:在一个字节(8位)中,LSB通常位于最右侧,即第0位(从0开始计数)。
2024-12-25 21:48:53
979
原创 计算器上的程序员模式(Hex、Dec、Oct、 Bin)
在计算机科学中,不同数制之间的转换是常见的任务。了解每种数制的表示方法和转换规则对于理解和操作计算机数据至关重要。此外,不同数制在特定的应用场景中具有各自的优势,例如二进制适合计算机内部存储,十六进制适合在编程中表示内存地址和颜色值等。Hex(十六进制)、Dec(十进制)、Oct(八进制)和 Bin(二进制)是计算机科学中常用的四种数制表示方法。每种数制都有其独特的表示方式和应用场景。
2024-12-25 21:32:09
1341
原创 陀螺仪与角速度
陀螺仪,源自古希腊语,意为“看到的旋转”。它基于陀螺的稳定性原理工作,即一个旋转的物体(陀螺)会抗拒方向的改变。当陀螺仪旋转时,其旋转轴会保持一个固定的方向,不受支架倾斜或旋转的影响,这是根据角动量守恒定律得出的。陀螺仪内部通常包含一个高速旋转的转子,以及用于测量转子旋转角速度的敏感元件。角速度是描述物体绕圆心做圆周运动时的旋转快慢程度的物理量。具体来说,它是连接运动质点和圆心的半径在单位时间内转过的弧度。角速度用符号ω表示,是矢量,既有大小又有方向。
2024-12-25 21:29:33
906
原创 在单片机工程中获取长度的sizeof和strlen之间的区别
sizeof和strlen在C语言(以及C++)中都是用于获取某种“大小”的工具,但它们之间有着显著的区别。
2024-12-21 17:20:04
784
原创 江科大HAL库版本之 3-1LED闪烁
鉴于自己也在学习嵌入式,为了加强自己对知识的巩固,决定尝试一下把江科大黄学长的实验工程代码HAL库化,也希望能帮助到一些人。顺便借用了B站一位同学的笔记,希望能够理解吧!
2024-10-28 20:43:33
313
原创 使用iic配置电源芯片之EEPROM
EEPROM 在写入数据时,仍要利用一定的编程电压,此时,只需用厂商提供的专用刷新程序就可以轻而易举地改写内容,所以,它属于双电压芯片。借助于 EEPROM 芯片的双电压特性,可以使 BIOS 具有良好的防毒功能,在升级时,把跳线开关打至“on”的位置即给芯片加上相应的编程电压,就可以方便地升级;擦除已有信息,重新编程。EEPROM 的擦除不需要借助于其它设备,它是以电子信号来修改其内容的,而且是以 Byte为最小修改单位,不必将资料全部洗掉才能写入,彻底摆脱了 EPROMEraser 和编程器的束缚。
2024-10-18 16:45:58
250
原创 优快云上充值30元,解锁看的关于BACnet 协议的文章【基于STM32的BACnet 协议设计研究】(个人感觉对于实际操作,没有太大指导意义)
本文在分析和研究BACnet 协议的基础上,在STM32上设计一个移植性好、可裁剪的、可扩展的BACnet 协议栈。在设计协议栈的过程中,根据协议栈的层次不同,把BACnet 分成三个主要模块:应用层、网络层和数据链路层,并对BACnet 协议数据链路层MS/TP、网络层功能进行了测试实现,具有较强的实际参考意义.
2024-10-14 13:55:42
107
原创 关于标准库和HAL库的FLASH的读写擦除以及吃过的亏!!!(不同系列芯片读写擦除函数的参数会有所不同)
对flash的操作依次是读取、擦除、写入函数,另外读取和擦除涉及到对内存数据的修改所以区别于读取有解锁和上锁步骤。
2024-09-29 09:50:44
330
原创 外行小白快速入门嵌入式#KEIL#从标准库到HAL库#CUBEMX教程大全#CUBEIDE教程大全
32,先要知道它是什么?其实就是一个32位的微型控制处理器MCU,类似于人的大脑,通过一些外设,能完成某些功能,拿人体行为来简单比较就是类似于走动停下快跑慢跑直走转弯,和别人通过写字说话手势等完成信息的传输和接收,以及依据这些信息去作出相应的行为。当然这里是简单的对比,具体的32功能要相对复杂许多。
2024-09-26 15:39:27
702
原创 基于 VMware 虚拟机安装 Ubuntu 系统(可拖拽桌面文件进入 Ubuntu)
避免 Ubuntu 与主机之间常出现的粘贴复制、文件互传无效问题,且后期便于依据主机配置调整其虚拟机的内存与硬盘大小
2024-09-25 16:04:29
505
原创 嵌入式入门一年遇到的问题及解决办法#非ST芯片使用IDE烧录报错#keil5复制代码,注释都是?#玩vscode 又不舍弃keil#Docker新手学习教程#采用rtt打印一会就失效
检查软件更新:检查嵌入式设备的固件或软件是否有可用的更新,这些更新可能修复了与RTT相关的已知问题。使用调试工具:利用J-Link或其他调试工具进行深入的调试,观察RTT的行为并尝试找到问题的根源。编写测试代码:编写专门的测试代码来模拟RTT的使用场景,以验证RTT在不同条件下的稳定性和可靠性。审查代码:仔细检查嵌入式程序中的相关代码,特别是与RTT打印相关的部分,查找可能的逻辑错误。检查RTT配置:确保RTT的配置符合硬件和软件的要求,包括缓冲区地址、大小、通道数等。
2024-09-24 17:29:20
850
原创 打油20首|诗解江科大STM32入门教程
外行小白偶然踏进嵌入式的江河,本来在看的是正点原子,但是对我这样的脑子不太聪明的人来说很痛苦,跟着弹幕来看江科大的
2024-09-23 17:48:05
1131
空空如也
BACnet协议移植进stm32,有无佬们搞定过的
2024-09-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人