- 博客(43)
- 收藏
- 关注
原创 HC32f460配置系统时钟为200MHz
本文详细介绍了如何将hc32f460的外置晶振配置为主频200M的步骤和方法。通过合理的时钟树配置和PLL参数设置,可以实现系统时钟的高效提升。
2025-04-01 11:25:49
478
原创 ROS2 DDS中间件(图文并茂+超详细)
DDS 的目标场景在端上,致力于使端上的应用可以更容易的进行通信,由于它的完全分布式架构,可以方便的将端上的应用拆分为多进程架构,从而提高端的容错能力。从产品定位角度来讲,它和 Chromium 中的 mojo 都是端上的通信中间件,只不过 mojo 不强调分布式,内部集成了更多的特定于端上的机制,比如句柄的传输,消息的缓存等。但由于 mojo 生于 Chromium,目前官方并没有把它独立出来,所以用起来比较不方便。而 DDS 或许可以在简单的场景下作为 mojo 的替代品。
2025-02-26 00:13:48
1875
原创 僵尸进程(Zombie Process)--详解
僵尸进程(Zombie Process)是指那些已经完成执行但仍在进程表中保留入口的进程。这种状态意味着进程已经终止,但其父进程尚未对其进行处理(即未调用 wait() 或 waitpid() 收集其退出状态)。
2025-01-24 17:31:36
615
原创 linux进程间通讯方式--详解
linux进程间通讯方式 管道(Pipe)及有名管道(named pipe)信号(Signal)报文(Message)队列(消息队列)共享内存 信号量(semaphore)套接口(Socket)
2025-01-24 16:00:15
313
原创 C++智能指针使用
智能指针是一种用于管理动态分配的内存资源的工具,它可以自动化内存的分配和释放,从而减少内存泄漏和悬挂指针等问题。智能指针通过使用 RAII(资源获取即初始化)的原则,在对象的构造函数中分配内存,在对象的析构函数中释放内存,确保资源的正确释放。
2024-03-14 16:29:09
625
2
原创 【Keil5】keil5修改主题背景颜色--仿VS Code 主题
keil单调的白底主题难免会让人产生视觉疲劳,该配置摸仿VS的黑色主题。当然,如果你觉得这些都不合你心意也可自己制作配色方案。
2024-01-24 18:19:38
4032
原创 Bluejay--控制多旋翼无刷电机的数字 ESC 固件
Bluejay中文意思是冠蓝鸦,一种雀形目鸦科冠蓝鸦属的鸟类。在这里是用于控制多旋翼无刷电机的数字 ESC 固件。
2023-12-11 10:00:00
1957
原创 GD32F3 开发资料大全---带资料连接
支持GD32330C-START板,GD32330F-START板,GD32330G-START板,GD32350C-START板,GD32350G-START板和GD32350R-EVAL板。适用于GD32F3x0系列MCU,与Cortex-M微控制器软件接口标准(CMSIS)兼容。固件库包括程序、数据结构和宏定义,覆盖所有集成外设的特征,并包括了全部相关驱动和示例程序。GD32F3x0系列IAR7.4、Keil MDK 4.74、Keil MDK 5.26 及更高版本支持安装文件。
2023-12-06 10:00:00
609
原创 MUC\GD32低功耗模式简介
低功耗模式在现在的开发中尤为重要,特别是在使用电池的设备中,今天我们就拿GD32来聊一聊低功耗模式,以及他们使用的状态与唤醒方式以及耗电情况。
2023-12-06 10:00:00
1321
原创 如何将四元数转换为旋转矩阵
四元数是表示物体在三维空间中的方向和旋转的几种数学方法之一。另一种方法是使用基于欧拉角的旋转矩阵,即滚动、俯仰和偏航,就像的封面图片。通常使用四元数代替欧拉角旋转矩阵,因为“与旋转矩阵相比,它们更紧凑、数值更稳定且更高效”请注意,四元数仅描述坐标系(即 3D 空间中的某个对象)绕任意轴的旋转,但它不会告诉您有关该对象位置的任何信息。
2023-12-05 10:00:00
2273
原创 32.768KHz时钟RTC晶振精度PPM值及频差计算
一个数字电路就像一所城市的交通,晶振的作用就是十字路口的信号灯,因此晶振的品质及其电路应用尤其关键。数字电路又像生命体,它的运行就像人身体里的血液流通,它不是由单一的某个器件或器件单元构成,而是由多个器件及程序彼此配合、协调,共同完成良性的运转。
2023-12-04 14:00:00
7454
2
原创 MAVLink 协议概述
MAVLink 是一种二进制遥测协议,专为资源受限的系统和带宽受限的链路而设计。MAVLink部署有两个主要版本:v1.0和v2.0,v2.0向后兼容(v2.0实现可以解析和发送v1.0数据包)。遥测数据流以多播设计发送,而改变系统配置并需要保证传输(如任务协议或参数协议)的协议方面是点对点重传。
2023-12-04 14:00:00
1744
原创 MAVLink 基础知识
如果仅能够理解 MAVLink1 的设备收到包含附加字段(在 MAVLink2 下添加)的消息,则该设备将仅看到原始字段。地面站通常使用较高的系统 ID,如“255”,车辆默认使用“1”(可以通过设置。MAVLink2 通过允许将新字段添加到现有 MAVLink1 消息中来扩展 MAVLink1,支持超过“255”的新消息并添加对签名消息的支持。通过将参数设置为“2”(其中“x”是飞行控制器上的串行端口号),可以将飞行控制器的串行端口(大概连接到遥测无线电)设置为使用 MAVLink2。
2023-11-28 00:22:46
2809
原创 UART通信协议及其工作原理(图文并茂+超详细)
通用异步接收器/发送器,通常称为UART,是一种广泛应用于嵌入式领域的串行、异步、全双工通信协议。UART 通道有两条数据线。每个设备上都有一个 RX 引脚和一个 TX 引脚(RX 用于接收,TX 用于发送)。每个设备的 RX 引脚都连接到另一个设备的 TX 引脚。请注意,没有共享时钟线!这是通用异步接收方发送方的“异步”方面。
2023-11-28 00:21:28
84982
7
原创 SPI协议详解(图文并茂+超详细)
串行外设接口 (SPI) 是微控制器(MCU)和外设 IC(例如传感器、ADC、DAC、移位寄存器、SRAM 等)之间最广泛使用的接口之一,近年来也被用作于MCU与MCU的通讯之中,本文简要介绍了 SPI 接口。SPI 是一种基于主子节点的同步、全双工接口。来自主节点或子节点的数据在时钟上升沿或下降沿同步。主、子节点可以同时传输数据。SPI 接口可以是 3 线或 4 线。本文重点介绍流行的 4 线 SPI 接口。
2023-11-24 15:36:35
17068
5
原创 protobuf | nanopb 在MCU平台的移植使用(小白版)
Nanopb 是 Google Protocol Buffers数据格式的纯 C 实现 。它针对 32 位微控制器,但也适用于内存限制严格(
2023-11-24 14:25:55
1422
原创 __attribute__((section(“name“),zero_init))解析
section,就得说RO RI ZI了,在ARM编译器编译之后,代码被划分为不同的段,RO Section(ReadOnly)中存放代码段和常量,RW Section(ReadWrite)中存放可读写静态变量和全局变量,ZI Section(ZeroInit)是存放在RW段中初始化为0的变量。如果使用 section 属性,则只读变量将放置在 RO 数据部分中,读写变量将放置在 RW 数据部分中,除非您使用 zero_init 属性。这个关键字,我们可以通过它将指定的变量定义到指定的输入段中。
2023-08-31 17:29:00
1370
原创 Dshot的使用说明书
Dshot - Digital Shot,是一个非常流行的,用于飞控与电调进行通信的通信协议。在四轴飞行器爱好者圈子中,它现在几乎是标准协议。该协议用于将目标油门值从飞控发送到电调,然后电调对其进行解码并相应地驱动电机。
2023-08-02 17:59:40
7993
8
原创 编译报错: Error: L6406E: No space in execution regions with .ANY selector matching xx.o(.data).
No space in execution regions with .ANY selector matching xx.o(.data). 当我们的MCU的没有足够RAM空间,因此我们会得到一个这样的错误。可以考虑减小对内存的使用以及增加堆栈空间大小,比如:1、不使用malloc来申请内存,使用全局变量或者静态变量。2、增大堆栈空间大小(根据MCU资源来修改)3、优化一些没有使用到的变量。
2023-07-31 14:05:06
6359
原创 I2C协议详解(图文并茂+超详细)
I²C 叫集成电路总线它是一种串行通信接口,具有双向两线同步串行总线,通常由两根线组成——SDA(串行数据线)和SCL(串行时钟线)和上拉电阻。
2023-07-20 17:47:15
33677
3
原创 编译报错:error: no matching function for call to
No matching function for call 表示当我们调用某些函数时,该函数的参数与函数定义的参数不匹配。因此,我们得到一个错误“No matching function for call”所以当我们继续向函数传递不正确类型的指定方法或不合适的参数集时。函数定义向编译器指定方法的名称以及如何调用它。
2023-05-16 17:50:13
36902
2
原创 RT-Thread---Nano 简介
RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。
2023-05-12 16:07:01
979
原创 git修改commit的用户名与邮箱
对于 git 的用户名与邮箱,我们大多数人都有两套,一套公司账户平时工作用和一套个人账户用于业余项目。而我又常常在 commit 以后才发现用户名与邮箱设置错了。本文总结了如何修改 Commit 的用户名与邮箱。
2023-05-08 16:10:52
2746
原创 RT-Thread---GD32_ARM系列BSP外设驱动使用教程
本文档是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。
2023-05-05 14:59:01
451
原创 RT-Thread---GD32_ARM系列驱动介绍
在 RT-Thread 实时操作系统中,各种各样的设备驱动是通过一套 I/O 设备管理框架来管理的。设备管理框架给上层应用提供了一套标准的设备操作 API,开发者通过调用这些标准设备操作 API,可以高效地完成和底层硬件外设的交互。
2023-05-04 18:18:19
364
原创 Could not find OpenSSL. Install an OpenSSL development package or configure CMake with -DCMAKE_US
Could not find OpenSSL. Install an OpenSSL development package or configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.
2023-05-04 14:38:31
1224
2
原创 【Zephyr OS】设备驱动模型
Zephyr 内核支持多种设备驱动程序。是否有驱动取决于单板和驱动。Zephyr 设备模型为配置作为系统一部分的驱动程序提供了一致的设备模型。设备模型负责初始化配置到系统中的所有驱动程序。每种类型的驱动程序(例如 UART、SPI、I2C)都由通用类型 API 支持。在此模型中,驱动程序在驱动程序初始化期间填充指向结构的指针,该结构包含指向其 API 函数的函数指针。这些结构按初始化级别顺序放入 RAM 部分。
2023-04-10 00:06:28
1010
1
原创 【Zephyr OS】介绍
Zephyr 项目是一个可扩展的实时操作系统 (RTOS),支持多种硬件架构,针对资源受限的设备进行了优化,并在构建时考虑了安全性。Zephyr OS 基于专为资源受限和嵌入式系统设计的小型内核:从简单的嵌入式环境传感器和 LED 可穿戴设备到复杂的嵌入式控制器、智能手表和物联网无线应用。Zephyr 内核支持多种架构,包括 ARM Cortex-M、Intel x86、ARC、Nios II、Tensilica Xtensa 和 RISC-V,以及大量支持的板卡。
2023-04-09 22:38:47
1619
2
原创 计算机相关资源总结分享
本文是计算机相关资源以及知识的汇总,总结了计算机相关的各种技术,覆盖了计算机以及软件的各个方面,可以让你系统的了解以及进一步学习计算机相关的知识。
2023-04-08 23:19:48
1519
1
原创 嵌入式相关开源项目、库、资料
学习初期最难找的就是找学习资料了,本文精心汇总了一些嵌入式相关资源,包括但不限于编程语言、单片机、开源项目、物联网、操作系统、Linux、计算机等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资料库。
2023-04-08 22:45:13
1750
原创 300行代码实现操作系统cola_os
cola_os是一个300多行代码实现的多任务管理的OS,在很多的MCU开发中,功能很简单,实时性要求不强,任务多了管理不当又很乱。如果使用RTOS显得太浪费,这时候可以尝试使用使用cola_os这类基于软件定时器实现的时间片轮询框架。cola_os是一份简洁明了的代码,包含很多有用的编程思想,值得通读。
2023-04-06 14:03:55
720
原创 STM32/GD32 BootLoader升级 IAP升级
如果我们的App 程序起始地址在0x08006000 ,并且App 的中断向量表在起始地址,那么BootLoader 程序下载App 后,为了App 程序能正确运行,开始App 程序的运行后第一步,就要把中断向量表重定位到0x08006000 那里。我们的BootLoader下载App程序后,App程序就需要做同样的事情。
2023-04-04 11:42:28
4276
9
keil单调的白底主题难免会让人产生视觉疲劳,该工具里有仿VS的黑色主题.当然,如果你觉得这些都不合你心意也可自己制作配色方案
2024-01-24
SH1106-OLED-Code驱动代码(0in910in950in961in271in31in321in51in51)
2023-07-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人