自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 多线程编程(含用例、值典藏)

本文介绍了线程的基本概念及其在不同系统中的状态转换。线程是操作系统调度的最小单位,共享进程资源但保持独立执行。文章详细对比了Java和Linux系统中的线程状态及其转换关系,并分析了多线程编程的优势与风险。关键点包括:线程相比进程更轻量级且资源共享,但需注意同步问题;Java线程有6种状态,Linux线程则有5种主要状态;多线程能提升性能但增加程序复杂度。合理使用线程可提高程序响应性和并行效率,但需谨慎处理同步与死锁问题。

2025-12-01 11:34:19 745

原创 多进程编程(典藏、含用例代码)

进程是操作系统进行资源分配和调度的基本单位,是程序的一次动态执行实例。进程由代码段、数据段、堆和栈组成,具有动态性、并发性、独立性等特征。进程状态包括创建、就绪、运行、阻塞/挂起和终止,各状态间可相互转换。进程管理通过进程控制块(PCB)实现,包含进程标识符、状态、调度信息等。进程调度分为长期、中期和短期调度,涉及上下文切换过程。进程的优点包括隔离性强、稳定性高,缺点是创建开销大、通信复杂。

2025-12-01 09:23:37 964

原创 RT-Thread实时操作系统介绍(典藏、含用例代码)

RT-Thread是中国自主研发的开源实时操作系统(RTOS),具备高度可裁剪性、丰富组件生态和多架构支持等特点。其系统架构采用分层设计,包含内核层、组件层和软件包层,支持灵活配置。线程管理方面提供五种状态(初始、就绪、运行、挂起、关闭)及动态转换机制,确保高效调度。任务创建支持动态和静态两种方式,动态创建通过rt_thread_create()函数实现,自动分配内存并指定优先级、栈大小等参数。RT-Thread广泛应用于物联网、工业控制等领域,装机量已超10亿台设备。

2025-11-27 10:05:30 1096

原创 程序:text段、data段、bss段

C语言程序的内存布局包含三个关键段:text段存储只读的机器指令;data段存储已初始化的全局和静态变量;bss段存储未初始化或零值的全局和静态变量,由系统自动初始化为零。text段在磁盘文件中存储,data段存储初始值,而bss段仅记录大小信息。这些段的生命周期贯穿整个程序运行期,地址分布相邻,与堆栈区域形成对比。通过示例程序可验证各段变量的存储位置特征。

2025-11-25 17:20:32 341

原创 基于rt-thread实现高效工作队列的方法、原理、接口介绍(包含源码)

本文深入分析了FMT-Firmware中的工作队列(WorkQueue)模块,该模块是一个基于"生产者-消费者"模型的异步任务调度系统。核心设计采用最小堆实现优先级队列,支持延迟任务和周期性任务调度。模块包含工作项(WorkItem)和工作队列(WorkQueue)两个核心数据结构,通过RT-Thread信号量保证线程安全。系统默认创建高/低优先级两个队列,工作线程采用事件循环机制,在无任务时自动挂起以节省资源。该设计具有高效调度(O(log n))、线程安全、灵活配置等优点,实现了任务提交与执行的解耦。

2025-08-27 11:01:15 951

原创 无人机(飞行器)的常见飞行模型和飞行阶段

本文系统阐述了飞行模式与飞行阶段的定义及关系。飞行模式是飞控系统的底层控制策略,决定飞行器如何响应指令(如手动模式、自稳模式、自主任务模式等);飞行阶段则描述任务流程中的宏观状态(如起飞、爬升、巡航、降落等)。两者呈层次关系:飞行模式服务于飞行阶段,共同构成完整的飞行任务管理。理解二者的区别与联系对无人机安全操控和任务规划至关重要,其中飞行模式是控制工具,飞行阶段是任务蓝图。

2025-08-27 00:49:30 1145

原创 遥控器:sbus协议详解(含C语言源码)

SBUS协议是一种用于遥控设备的串行数字通信协议,采用反相逻辑UART信号,通过单线传输16个通道的控制信息。其核心特性包括:100kbps波特率、8E2数据格式、25字节数据帧结构,包含11位/通道的控制数据及状态标志。协议支持故障安全检测,更新速率为14ms(标准模式)或7ms(快速模式)。实际应用中需注意硬件反相处理,并正确解析数据帧中的位拼接信息。该协议广泛应用于飞控系统,实现高效可靠的遥控通信。

2025-08-27 00:21:39 1124

原创 FMT的目录结构、启动运行流程和任务的详细介绍(FMT-firmware源码)

Firmament (FMT) 是一款基于模型设计 (Model Based Design, MBD) 的开源自驾仪,可被用来快速构建无人机、车辆、船舶、机器人等的无人控制系统。基于模型设计 (MBD) 方法允许高效快速地开发高质量的控制系统,适用于各种无人控制平台,包括航空器、地面车辆、船舶和机器人。其中,FMT-Firmware代码结构较为复杂,要理解代码就要分清楚代码的目录结构、main函数启动,以及任务的定义,接下来将从这三个方面进行介绍。若有错误之处,请大家批评指正。

2025-08-15 21:06:26 983

原创 惯性测量单元(IMU)-QMI8658A驱动开发简要介绍

QMI8658(A系列)是一款国产六轴姿态传感器,也是一款低噪声、高带宽的六轴惯性测量单元(IMU),主要包含三轴陀螺仪和三轴加速计,还包括温度计。所以该传感器就是读取六轴数据就可以了,姿态解算自己在控制端实现,因为目前attitude engine无法使用了。QMI8658A数据手册地址QMI8658C数据手册地址QMI8658在典型传感器模式下,输出原始传感器值,使用寄存器配置和读取传感器的采集的数据,其思路为:上电->复位->陀螺仪校准->自检->配置传感器->读取传感器数据。使用配置的寄存器如下。

2025-08-01 21:07:53 2563

原创 气压计SPL07驱动开发简要介绍

支持存储最近32次气压或温度的测量结果。按照采样频率的不同,这32个结果中压力、温度的结果值个数不一样。比如,气压的采样频率是温度的3倍,那么这32个结果中有24个为气压数值,8个温度数值。SPL07 是一款高精度、低功耗的微型数字气压传感器。SPL07-003 既是压力传感器,也是温度传感器。当有新的测量结果可用或者FIFO满了时,就会在引脚SDO产生中断信号。支持IIC接口和SPI接口(4线SPI和3线SPI)。支持三种工作模式:待机模式、命令模式和后台模式。默认是采用IIC接口通信。

2025-08-01 15:13:37 411

原创 C语言实现RK3588(ubuntu)的串口和网口通信程序

在上述代码中有信号处理函数,处理SIGINT信号。printf("\n服务器终止中...\n");exit(0);现在简要介绍一下SIGINT和SIGSTP信号。SIGINT 和 SIGTSTP 是 UNIX /类UNIX 系统中的两种不同的信号,它们用于进程间通信和控制。

2025-08-01 14:44:14 895

原创 【飞控系统】简要理解

无人机飞控系统由感知层、决策层和执行层组成。感知层通过IMU、GPS等传感器获取飞行数据;决策层运用PID控制算法和卡尔曼滤波处理数据;执行层通过电机和舵机执行飞行指令。这三层结构协同工作,使无人机实现精准控制和智能飞行。

2025-07-27 23:34:45 614

原创 【git版本管理】常用指令和基础教程

在软件开发过程中,git是最常见的协作、版本控制软件,在工作和学习中经常用到;本文将简要介绍git的基本概念和常用命令。

2025-07-27 22:20:19 427

原创 vs、vscode工具使用

常见工具使用技巧等。

2023-10-24 16:11:44 318

原创 C语言用十六进制的方式打印字符串(密文字符串打印查看)

密码算法处理后的数据D,如果使用普通的printf函数打印D,不能正确显示数据;其原因有1.ASCII编码的字符分为可显示字符和非可显示字符,2. 遇到00后会默认结束,等。所以要查看密文数据D,应该用十六进制的方式打印查看;其函数为PrintHex,具体如下。

2023-10-24 15:41:23 1156

原创 【新手】shell编程简介及快速入门

shell编程的基础介绍,适合初学者学习交流,我也是学习后留一笔记。

2023-08-27 21:57:17 181

原创 linux开发环境基础搭建

Makefile带来自动化编译,一旦写好,只需要一个make指令,整个工程完全自动编译,极大的提高了软件开发的效率。注,make工具需要提前安装好哦。gdb是有GNU软件系统社区提供的调试工具,同GCC配套组成了一套完整的开发环境,GDB是linux和许多类Unix系统中的标准开发环境。调试的可执行程序理论上应该由类似如下质量生成,理论上。其中,-g选项的作用是在可执行文件中假如源代码信息;-wall选项是打开所有warning;-O选项是关掉编译器优化选项。......

2022-07-20 22:12:12 1239

原创 【留下笔记】实习过程中查询过的问题,留下来

C语言数组名和指针?答:数组名可以当做指针使用,因为数组名可以表示改数组第一个元素的地址;但不能将数组名理解成指针,两者区别很大。内存申请相关函数:malloc、ralloc、freevoid * malloc(size_t size); //申请size个字节的内存空间void *realloc(void * prt,size_t size ); //跳帧之前malloc、calloc、realloc所分配ptr所指向的内存卡大小。char c = ‘我’ 正确吗?错误,一个char

2022-01-19 14:55:11 833

原创 查看C语言函数/程序运行时间与linux下获取秒级、微秒级精确时间的方法

前言获得函数的运行时间,在测试和验证函数接口中经常用到。近日,check测试单元对项目的函数接口测试时莫名其妙的报错【(after this point) Test timeout expired】,寻找了很多方法都没解决问题。最后,决定对函数运行时间的判断,果然发现其中新增函数的运行时间极长,分析其需要等待某些资源,最终解决问题。通过网上各种方法的寻找,这些方法的介绍比较散乱,实际可用性较低;因此,本文将介绍三种简单的程序运行时间的获取方法,直接使用,拒绝套路。第一种:直接使用linux下的time命

2022-01-17 15:57:36 3756 2

原创 国密gmssl命令行生成SM2证书

简介最近想了解一下gmssl生成证书的流程,首先就来体验一下用指令完整证书的生成操作。目前,有一些文章已经有相关的详细介绍,但还是存在一定问题,如:CA密钥名与openssl中默认的cakey.pem不一致,导致证书生成失败;等。提前安装好gmssl;查看gmssl版本指令`gmssl version` 本文章使用的gmssl 2.5.4....

2022-01-13 10:40:45 11010 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除