- 博客(288)
- 收藏
- 关注
原创 基于PX4和Ardupilot固件下自定义MAVLink消息测试(QGroundControl和Mission Planner)
在无人机行业,MAVLink(Micro Air Vehicle Link)协议已经成为了通信的标准协议。MAVLink协议定义了一种轻量级的消息传输格式,广泛应用于PX4和ArduPilot等开源无人机飞控固件中。通过自定义MAVLink消息,我们可以为无人机添加特定功能或扩展现有功能。本文将详细介绍如何在PX4和ArduPilot固件下自定义MAVLink消息,并使用QGroundControl和Mission Planner进行测试。
2025-04-01 00:00:00
662
原创 在MCU工程中优化CPU工作效率的几种方法
在嵌入式系统开发中,优化 CPU 工作效率对于提升系统性能、降低功耗、提高实时性至关重要。Keil 作为主流的嵌入式开发工具,提供了多种优化策略,包括 关键字使用、内存管理、字节对齐、算法优化 等。本文将从多个方面介绍如何在 Keil 工程中优化 CPU 运行效率。
2025-03-31 00:00:00
2069
1
原创 基于多链路的命令表驱动设计
在嵌入式系统开发中,尤其是涉及多链路通信的应用场景(如串口、SPI、以太网等),需要设计一种高效的方式来解析和处理不同链路上的多条命令。本文介绍了一种基于命令表驱动法的设计方式,通过命令查找表(Command Lookup Table)和链路管理表(Channel List)实现高效的命令分发。
2025-03-30 03:35:32
556
原创 使用__attribute__((at(addr))) 固定变量到指定 Flash 地址
在嵌入式开发中,有时我们需要在 Flash 指定地址存储特定的标志位或常量数据,例如 Bootloader 标志、固件版本信息、校验码等。这时,可以使用 `__attribute__((at(addr)))` 关键字,将变量固定存放在指定的 Flash 地址。
2025-03-23 15:14:34
810
原创 如何在MCU工程中启用HardFault硬错误中断
HardFault硬故障错误中断是 ARM Cortex-M 系列微控制器中一个较为严重的错误中断,一旦触发,表明系统遇到了无法由其他异常处理机制解决的问题。内存访问错误、总线错误、堆栈溢出或损坏、异常处理错误、指令执行错误、硬件故障等
2025-03-21 23:01:13
1004
原创 嵌入式内存管理之“LittleFS文件系统”开发(附LittleFS项目源码)
本文介绍了如何在嵌入式系统中实现 LittleFS 文件系统,并结合 Flash 存储进行数据管理。通过详细的代码示例,展示了如何配置、挂载 LittleFS 文件系统,并进行文件操作,如读取、写入和更新数据。特别地,博客通过实际应用演示了如何实现启动计数功能,以及如何处理文件系统的格式化和挂载过程。该示例帮助读者掌握在资源受限的嵌入式环境中实现高效文件存储管理的关键技术。
2025-03-09 18:02:45
1009
原创 全网最详细的UAVCAN/DroneCAN链路开发(官方DroneCAN消息+自定义DroneCAN消息)附DroneCAN项目源码
全网最详细的UAVCAN/DroneCAN链路移植开发(官方DroneCAN消息+自定义DroneCAN消息)附工程移植源码
2025-03-06 23:43:48
688
原创 MAVlink链路开发(环境搭建+工程移植)
MAVlink链路常用于云台相机与飞控以及地面站之间的数据传输,搭建MAVlink链路环境需要安装**Python、Future、MAVLink、pymavlink**四样工具用于生成mavlink代码,若下载或运行中出现`No module named ‘xxx’`,即为某项下载失败,可能是由于`pip`工具版本与python版本不兼容,更新pip版本即可,在命令行中输入“`python -m pip install --upgrade pip`”,等待更新完成,然后重新下载即可
2025-02-28 21:37:18
376
原创 UAVCAN/DroneCAN通讯收发示例
UAVCAN/DroneCAN链路开发,UAVCAN/DroneCAN是基于CAN通讯上的一种封装协议,常用于无人机飞行器领域。
2024-12-28 18:12:31
919
原创 唯一设备序列号(UID)、唯一产品识别码(UPI)和备份寄存器BKP
(Unique Customer ID),这两个设备序列号存放在闪存存储器的系统配置块中,它们所包含的信息在出厂时编写,并保证对任意一个 MCU 微控制器在任何情况下都是唯一的,用户应用程序或外部设备可以通过CPU 或 JTAG/SWD 接口读取,不可被修改。在实际软件开发中,有一些数据你希望保存在mcu中,不被轻易擦除更改,可能你第一想到的是内部Flash,但当系统重新烧录时flash里面的数据会被覆盖或者擦除,这是你不愿看到的,所以这里我给大家介绍一个寄存器来存储少量数据,不易丢失。
2024-11-24 16:12:36
1242
原创 MAVlink协议 部分通用消息集解析
MAVLink是一种非常轻量级的消息传输协议, 用于地面控制终端(地面站)与无人机之间 (以及机载无人机组件之间) 进行通信, 为一种设计用于资源受限系统及带宽受限链路的二进制遥测协议。
2024-10-24 22:06:40
1941
原创 bootloader固件升级开发原理
在实际企业中,对产品进行软件上的更新迭代,不再会像你在学校里头用st-link或者j-link等烧录器对单片机进行直接擦写,而是会将一个产品编写两套代码(Bootloader和APP),APP是你对产品实际需要设计的代码,Bootloader则是用于给APP代码做引导写入到单片机的指定地址。
2024-09-21 21:34:35
1192
原创 雅特力AT32 闪存零等待区(ZW)和非零等待区(NZW)
在支持零等待区(ZW)的MCU型号中,可以在程序设计时将不能失速的重要代码放在零等待区(ZW),需要频繁擦写的内容放在非零等待区(NZW),利用非零等待区(NZW)的擦写和零等待区(ZW)的读取可以同时执行的特性实现所需的实时功能。
2024-07-22 14:55:44
1396
原创 如何制作一款最基础的物联网开发板
这里我选取市面上最常用的STM32作为试验绘制,我用的嘉立创进行PCB绘制,所以如下都是以嘉立创下的环境进行分析处理。创建工程,开始绘制。
2024-05-30 21:45:49
597
1
原创 基于OpenMV 双轴机械臂 机器学习
以摄像头左上角为坐标原点建立坐标系,通过识别目标物块 获取物块的中心坐标点位,以识别到的点位作为实际点位,摄像头的中心坐标作为目标点位,引用PID算法分别在x轴和y轴上设计两套位置闭环,将输出信号赋给舵机,使其收敛于目标点位。两套二维云台设备,Device1通过摄像头捕捉目标物块点位进行实时追踪,再将自身点位传到Device2,Device2学习Device1动作,控制误差
2024-04-28 15:01:50
2073
2
原创 基于四足机器人和机械臂的运动控制系统(一)
本项目旨在设计和实现一种基于四足机器人和机械臂的运动控制系统,以提高机器人在不同环境中的适应性和任务执行能力。探索传感器融合、路径规划、运动控制算法等关键技术,以实现机器人的高效定位、平衡控制、障碍物避障、物体抓取等功能。通过在实际场景中的实验验证,将评估所提出系统的性能和效果,并与现有的相关研究进行比较
2024-02-19 20:56:55
2735
2
原创 小学生都会搓的系统板【画PCB-->布线 -->制版-->焊接-->验板】
在大学嵌入式相关专业,有许多同学是更偏向软件上的设计,并不懂硬件上的实现,而当在面临就业时,经常会被一些面试官问到你硬件上的盲区,为在有限的时间里有高质量的提升,这里我以的。
2024-01-27 19:23:54
1904
原创 解决 rtthread.elf section `.text‘ will not fit in region `ROM‘ ,region `ROM‘ overflowed by 10136 bytes
rtthread.elf section `.text' will not fit in region `ROM' ,region `ROM' overflowed by 10136 bytes。也就是说该项目大小已经超过了本身Flash大小,我这里用的芯片是STM32F103C8T6,Flash为64k,即已大于64k。也就是选用Flash更大的芯片。
2024-01-15 13:59:32
2369
原创 各红外线通信协议解码(通用型)【NEC、Sony SIRC、RC-5、RC-6、Samsung】
红外线通信协议解码是指将接收到的红外线信号转换为可理解的数字数据,以便对其进行进一步处理和操作的过程。红外线通信协议解码通常用于遥控器接收器等设备中。在红外线通信中,遥控器发送器使用特定的红外线协议来编码命令和数据,并通过红外线发射器将这些信息转换为红外线信号。接收器捕获这些红外线信号,并通过解码过程将其还原为原始的命令和数据。NEC、Sony SIRC、RC-5、RC-6、Samsung等
2024-01-09 21:19:53
9100
4
原创 RT-Thread使用SystemView调试分析
SystemView是一个用于可视化分析任何嵌入式系统的工具包。SystemView提供了对应用程序的完整洞察,以获得对运行时行为的深刻理解,远远超出了调试器所提供的。当在具有多个任务和事件的复杂系统中开发和工作时,这是特别有利的。
2023-12-21 20:30:16
1657
2
原创 RT-Thread 三步实现利用DMA进行串口发送
想要使用串口的DMA发送,需要在board.h打开相关宏定义在串口驱动文件drv_usart.c中可以发现关于dma操作的函数只有两个,所以只需要删除两句函数开头的static关键字。
2023-12-05 08:00:00
1636
原创 RT-Thread 汇编分析启动流程
直到“b LoopCopyDataInit”,即跳转到标签LoopCopyDataInit 执行。直到b LoopFillZerobss,即跳转到标签LoopFillZerobss执行。直到bl SystemInit,即跳转到标签SystemInit执行,并在执行后返回此处。执行完后,返回到LoopFillZerobss 标签,继续执行bl entry。执行完后,返回到LoopFillZerobss 标签,继续执行bx lr。这里介绍即几条最常见实用的汇编指令。
2023-12-04 08:00:00
1015
原创 RT-Thread ADC_DMA
看到这里,相信大家已经尝试过网上各类ADC_DMA传输的文章,且大多都并不能实现,因为在RT-Thread中并没有找到关于ADC的DMA接口,在官方例程中有关DMA的传输也只有一个串口接收的介绍,找遍全网怕也没能找到真正有用的消息。在我成功实现ADC_DMA之前,也是和大家一样,到处寻找相关消息以及求助ChatGPT,可想而知,把希望寄托于别人倒不如自己去摸索,这样自己更能知道缺什么做什么。。。不多说了,请往下看。
2023-12-03 08:00:00
1909
原创 VL53-400激光测距传感器
先由激光二极管对准目标发射激光脉冲。经目标反射后激光向各方向散射。部分散射光返回到传感器接收器,被光学系统接收后成像到雪崩光电二极管上。雪崩光电二极管是一种内部具有放大功能的光学传感器,因此它能检测极其微弱的光信号。记录并处理从光脉冲发出到返回被接收所经历的时间,即可测定目标距离。该模块部分商家已取消IIC协议,串口默认配置为115200、8数据位、1停止位、无校验位。时会出现激光穿透现象,即回收不到数据。
2023-12-02 16:42:45
1142
原创 嵌入式基础电路设计和常用芯片用法
按键电路、晶振电路、降压电路及SN74HC244PWR、TLP2362、ACS724、LM358、EL357-NB、SMBJ30CA芯片介绍
2023-12-01 19:59:12
4204
原创 机器人AGV小车避障传感器测距
该模块是基于机器人自动控制应用而设计的,针对目前市场上对于超声波传感器模组盲区大、测量角度大、响应时间长、安装适配性差等问题而着重设计。具备了盲区小、测量角度小、响应时间短、过滤同频干扰、体积小、安装适配性高、防尘防水、寿命长、可靠性高等一系列优点。
2023-11-30 16:29:24
2190
原创 RT-Thread 线程间通信【邮箱、消息队列、信号】
当有新的消息到达时,挂起的线程将被唤醒以接收并处理消息。创建消息队列时先从对象管理器中分配一个消息队列对象,然后给消息队列对象分配一块内存空间,组织成空闲消息链表,这块内存的大小 =[消息大小 + 消息头(用于链表连接)的大小]X 消息队列最大个数,接着再初始化消息队列,此时消息队列为空。发送紧急消息的过程与发送消息几乎一样,唯一的不同是,当发送紧急消息时,从空闲消息链表上取下来的消息块不是挂到消息队列的队尾,而是挂到队首,这样,接收者就能够优先接收到紧急消息,从而及时进行消息处理。
2023-11-24 08:00:00
3835
原创 RT-Thread 线程间同步【信号量、互斥量、事件集】
同步是指按预定的先后次序进行运行,线程同步是指多个线程通过特定的机制(如互斥量,事件对象,临界区)来控制线程之间的执行顺序,也可以说是在线程之间通过同步建立起执行顺序的关系,如果没有同步,那线程之间将是无序的。多个线程操作 / 访问同一块区域(代码),这块代码就称为临界区,上述例子中的共享内存块就是临界区。线程互斥是指对于临界区资源访问的排它性。当多个线程都要使用临界区资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。
2023-11-23 08:00:00
1358
原创 RT-Thread Hoist_Motor PID
具体实控例如在50Hz情况下,即周期为20ms①驱动信号区间: 区间一(0.5ms-1.5ms )和区间二(1.5ms-2.5ms ) (注意都是开区间且存在死区)②其中区间一和区间二分别表示不同的方向运动,例区间一表示正方向,则区间二表示反方向。③旋转速度呈现为“ V ” 字形,即0.5ms和2.5ms分别表示为正反方向的最快速度,1.5ms左右分别表示正反方向的最慢速度。其中小于等于0.5ms时、1.5ms时和大于等于2.5ms时电机都保持停转状态。电调引线。
2023-11-22 08:00:00
511
原创 RT-Thread JSN-SR04T
JSN-SR0T4-2.0 超声波测距模块可提供 20cm-600cm 的非接触式距离感测功能,测距精度可达高到 2mm;模块包括收发一体的超声波传感器与控制电路组成。产品采用工业级一体化超声波探头设计,防水型,性能稳定,谦容市场上所有的 MCU 工作。
2023-11-21 15:21:05
663
原创 RT-Thread BMI088--SPI
BMI088是一款高性能6轴惯性传感器,由16位数字三轴±24g加速度计和16位数字三轴±2000°/ s陀螺仪组成。第三步,**进入stm32f4xx_hal_conf.h **③查找 spi 设备获取设备句柄。来驱动BMI088进行数据解读。
2023-11-19 08:00:00
2024
1
原创 RT-Thread Timer
计数频率:定时器模式时,计数器单位时间内的计数次数,由于系统时钟频率是定值,所以可以根据计数器的计数值计算出定时时间,定时时间 = 计数值 / 计数频率。例如计数频率为 1MHz,计数器计数一次的时间则为 1 / 1000000, 也就是每经过 1 微秒计数器加一(或减一),此时 16 位计数器的最大定时能力为 65535 微秒,即 65.535 毫秒。硬件定时器一般有 2 种工作模式,定时器模式和计数器模式。定时器模式:对内部脉冲信号计数。定时器常用作定时时钟,以实现定时检测,定时响应、定时控制。
2023-11-17 08:00:00
670
原创 RT-Thread ADC
(Analog-to-Digital Converter) 指模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。模数转换器可以实现这个功能,在各种不同的产品中都可以找到它的身影。与之相对应的 DAC(Digital-to-Analog Converter),它是 ADC 模数转换的逆向过程。ADC 最早用于对无线信号向数字信号转换。如电视信号,长短播电台发射接收等。
2023-11-16 08:00:00
762
原创 RT-Thread 五步完成OLED移植
这里使用RT-Thread Studio提供的IIC API驱动函数进行移植。第四步,添加oled.c及oled.h文件,放置。
2023-11-14 21:56:39
805
2
原创 RT-Thread Studio开发 新手入门 【PIN设备、串口、OLED图形库】
RT-Thread Studio主要包括工程创建和管理,代码编辑,SDK管理,RT-Thread配置,构建配置,调试配置,程序下载和调试等功能,结合图形化配置系统以及软件包和组件资源,减少重复工作,提高开发效率。STM32CubeMX是一种图形工具,通过分步过程可以非常轻松地配置STM32微控制器和微处理器,以及为Arm® Cortex®-M内核或面向Arm® Cortex®-A内核的特定Linux®设备树生成相应的初始化C代码
2023-11-12 17:22:30
2666
瑞萨RA6M5-FSP-Qt遥控小车.zip
2023-06-12
基于STM32 蓝牙双机通信.zip
2023-05-05
STM32F103红外循迹小车
2023-05-05
stm32-五线四相步进电机.zip
2023-05-05
STM32-读写RFID.zip
2023-05-05
stm32-qt遥控小车.zip
2023-05-05
mpu6050姿态解算(陀螺仪).zip
2023-05-05
GY-39(IIC).zip
2023-05-05
MSP430驱动函数库
2023-03-14
IAR for MSP430 7101
2023-03-11
C语言/C++常见笔试面试题难疑点汇总
2023-02-27
STM32-BH1750+OLED
2023-02-25
ESP8266WiFi模块
2023-02-25
5.0步进电机绝对定位+梯形加减速.zip
2022-11-17
MQ-2烟雾浓度传感器.zip
2022-11-17
12864OLED液晶屏
2022-11-17
对射式红外传感器模块、测速传感器模块、计数器模块、电机测试模块、槽型光耦模块
2022-11-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人