自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单片机|嵌入式硬件设计--电阻选型

电阻选型需遵循系统化步骤:首先通过欧姆定律计算理论阻值并选择最接近的标称值;其次根据功率计算选择额定功率,建议降额50%使用;然后综合考虑散热和空间因素选择合适封装;最后根据应用场景选择材料,普通电路用碳膜/金属膜,精密或大功率场合选用金属箔/线绕电阻。关键要平衡性能、可靠性与成本,注意精度、温漂等参数匹配实际需求。选型口诀为"算参数-定要求-选材质",确保电阻在电路中稳定可靠工作。

2026-06-01 20:00:00 1468 1

原创 单片机|嵌入式硬件设计--电容选型

电容选型需综合考虑容值、耐压、介质材料等参数。容值计算依据储能公式和容抗公式,耐压需降额至75%使用。四大电容类型各有特点:陶瓷电容适合高频去耦,钽电容用于电源稳压,薄膜电容适用于高压场景,铝电解适合低频储能。选型时需注意:陶瓷电容优选低ESR小封装,钽电容需严格降额且避免高耐压型号。不同应用场景有对应的推荐类型,如芯片去耦推荐X7R陶瓷电容,电源滤波需铝电解与陶瓷电容并联使用。

2026-06-01 20:00:00 543

原创 编程常见函数--求反序int(C、C++、Python版)

摘要:本文介绍了将整数反序的算法实现。通过循环取出原数的个位数字(x%10),将其添加到反序数(初始为0)的末尾(revx*10 + x%10),并去除原数的个位(x/10),直到原数为0。提供了C/C++和Python两种语言的实现代码,核心逻辑相同:使用while循环和取模、除法运算完成数字反序操作。该算法常用于判断数字对称性或需要反序的场景。

2026-04-08 17:37:35 320

原创 电源电路设计-线性稳压器(LDO)-含AMS1117-3.3设计解析

电源电路作为PCB设计的核心模块,其稳定供电是电路正常工作的基础条件。LDO(低压差线性稳压器)作为电源电路中常见的芯片类型,在项目复刻过程中经常被使用,但多数使用者对其原理了解不够深入。本文将系统阐述LDO的工作原理,并以AMS1117-3.3芯片为例进行详细设计解析。

2026-04-08 17:34:31 1016

原创 全网最全多部多层电梯群控算法分析2--单部思想

本文作为群控算法的前导内容,将简要阐述单部电梯的设计思路与常见问题,旨在统一前文提及的模块化设计理念和单部电梯思维框架。文中暂不涉及具体实现细节。警告:本篇会涉及程序截图,均属于部分程序,可作为思路上的参考,切勿随意模仿。

2026-03-17 20:30:02 791

原创 C语言输入输出函数你不知道的那些事(scanf、printf等)

本文详细解析了C语言中常见输入输出函数的使用方法。重点介绍了scanf和printf函数的格式说明符、返回值及注意事项,如scanf会跳过空白字符但可能造成缓冲区溢出风险。同时讲解了getchar和fgets函数的特点,特别指出scanf后直接调用fgets可能因缓冲区残留字符导致问题,建议使用getchar清除缓冲区。这些函数的正确使用对程序输入输出处理至关重要。

2026-03-17 20:23:37 429

原创 全网最全多部多层电梯群控算法分析1——介绍篇

本文分享了作者参加"西门子杯"电梯群控算法竞赛的经验心得。文章指出电梯群控算法核心在于实现高效率与低能耗,同时必须确保安全可控的基本前提。重点分析了多部电梯并联控制的必要性,系统面临的不确定性和实时性挑战,以及程序架构的模块化设计原则。作者强调群控系统应采用分层设计,使单梯独立运行仅响应目标楼层指令。文中还提醒PLC程序存在扫描周期限制,部分算法可能难以满足实时性要求。

2026-03-12 19:53:29 662

原创 建议收藏:C语言常见的字符串相关库函数解析(srting)

本文介绍了C语言string.h库中常用字符串处理函数,包括字符串操作函数(strlen、strcpy、strcmp、strcat)、内存操作函数(memset)和字符串查找函数(strchr、strstr)。重点讲解了各函数的原型、功能、输入输出参数及使用示例,并指出使用注意事项,如缓冲区溢出风险等。这些函数是C语言字符串处理的基础工具,掌握它们对日常编程至关重要。

2026-03-12 19:30:58 592

原创 基于STM32的FreeRTOS的vTaskDelay函数解析

本文解析了FreeRTOS中vTaskDelay函数的实现原理。该函数通过主动释放CPU控制权实现任务延时,与传统的空循环延时不同。主要流程包括:验证延时功能启用状态,检查调度器运行状态,挂起调度器后将当前任务加入阻塞列表,计算唤醒时间,最后恢复调度器并根据情况触发任务切换。关键点在于保证操作原子性,通过xAlreadyYielded变量跟踪上下文切换状态,确保延时期间CPU资源能被其他任务合理利用。该机制体现了RTOS的任务调度优势,每个时钟节拍对应1ms延时,通过系统节拍定时器实现精确控制。

2026-01-30 19:00:00 1631

原创 keil添加STC系列芯片过程-建议收藏

摘要:本文介绍了如何为STC系列单片机配置Keil开发环境。首先需下载Keil C251版本和STC-ISP下载软件,通过STC官网获取最新版STC-ISP。重点讲解了将STC芯片型号添加到Keil的步骤:在STC-ISP中选择对应型号,指定Keil安装路径(需包含UVx和C251目录)。最后验证Keil工程中是否成功添加芯片型号。整个过程简单易行,主要区别仅在于芯片型号选择环节,适用于不同版本的Keil环境开发STC系列单片机。

2026-01-30 19:00:00 1125

原创 全网最详细的定点数运算--逻辑运算

本文系统介绍了计算机中的移位运算,重点分析了逻辑移位和算术移位的区别与应用。逻辑移位适用于无符号数,统一高位/低位补0;算术移位针对有符号数,需保持数学意义。原码移位符号位不变但存在精度丢失和溢出问题;补码通过符号扩展确保运算正确性,成为现代计算机标准。关键区别在于算术移位需处理符号位(原码保持不变,补码右移补符号位),且只有算术左移可能引发溢出(符号位改变)。右移操作均可能导致精度损失。文章通过具体案例演示了不同编码方式下的移位效果及异常情况。

2026-01-17 20:00:00 637

原创 不同编码格式特点--附keil、VSCode编码格式修改

本文系统梳理了常见文本编码格式的特点与应用。ASCII是最基础的7位编码,仅支持英文字符;GBK采用1-2字节编码,支持2万多中文字符;UTF-8是1-4字节的通用编码,兼容ASCII且支持全球字符。文章指出文本乱码问题多源于编码格式不一致,建议统一使用UTF-8编码,并在打开文件时确保软件编码设置与文件实际编码格式匹配。针对不同开发工具(如Keil、VSCode),提供了具体的编码设置方法,强调保持编码一致性是解决乱码问题的关键。

2026-01-17 20:00:00 1303

原创 51单片机程序下载逻辑

本文揭示了单片机程序下载的工作原理:51单片机通过冷启动执行内部固化的ISP程序来识别下载指令,建立通信机制。下载时需先发送握手信号再上电,使ISP程序进入编程模式完成程序擦写。下载器则负责协议转换,通过驱动程序和硬件电路将USB协议转换为单片机可识别的UART协议和TTL电平信号。整个过程体现了软硬件协同工作的原理,解决了不同通信协议间的转换问题。

2026-01-14 18:56:29 508

原创 基于STM32F1系列FreeRTOS移植心得

本文系统介绍了FreeRTOS移植的关键要点。首先指出FreeRTOS作为硬件与用户程序间的桥梁,其移植核心在于硬件适配层和任务管理系统的实现。详细解析了FreeRTOS源码结构,包括port层代码(需匹配芯片架构)和通用内核代码。针对STM32等芯片,建议保留Keil、MenMang和RVDS三个关键文件夹,并选用合适的配置版本。强调FreeRTOSConfig.h文件的重要性,建议初学者直接采用开发板厂商提供的配置方案。最后提醒使用HAL库时需注意与FreeRTOS的兼容性问题,推荐参考正点原子或野火等

2026-01-14 18:55:55 776

原创 四大差错校验方法全解析

本文梳理了计算机网络中常用的四种差错校验方法:奇偶校验通过调整校验位使数据中1的个数为奇数或偶数,简单但只能检测单比特错误;CRC校验利用多项式模2除法生成校验码,能检测多种错误但无法纠错;校验和通过对数据分块求和取反实现快速验证,广泛应用于网络协议;海明码通过冗余校验位实现单比特错误纠正,适用于高可靠性场景如ECC内存。这些方法各有特点,适用于不同数据传输需求。

2025-12-31 20:50:52 1353

原创 Python烟花秀:2026新年祝福代码解析 BGM版

先看看效果截图吧。今天闲来无事突然想试试,好久没用电脑了,一时没找到录屏软件在哪。简单说明一下:这段Python代码实现的效果是烟花绽放后,背景音乐响起,文字缓缓浮现。虽然实现原理很简单,却花了我两个小时,不过整个过程挺有意思的。我会标注出可以修改的部分和注意事项,其他未说明的地方建议保持原样。

2025-12-31 18:36:07 2124

原创 一文讲透算法时间复杂度计算与分析

输入规模n与运行时间T的关系T(n)

2025-12-14 13:46:39 1160

原创 python使用pip进行库的下载

现如今有太多的python编译软件,其库的下载也是五花八门,但在作者看来,无论是哪种方法都是万变不离其宗,即pip下载。pip是python的包管理工具,无论你是用的什么python软件,我们都可以用pip进行库的下载。

2024-12-23 22:26:50 3675

原创 【数据结构】【线性表】栈在算术表达式中的应用

栈如何在算术表达式中应用?中缀表达式如何转为后缀表达式?只会算四则运算?带函数等的高阶算术表达式如何运算?通过本篇内容,我们解决一个看起来简单其实比较复杂的算术表达式的计算,区别于其它只讲述了四则运算的文章,本篇文章更加注重实用性,可计算函数,指数等,拓展性强,可根据需求设计计算指数,乘方甚至虚数等。需要注意的是该文章更加注重作者解决该问题的过程,更加注重解决算术表达式的计算问题,有一定理解难度,需要对线性表,栈,结构体,枚举等有一定了解。

2024-12-23 21:04:49 1385

原创 【C语言】动态内存管理:详解malloc和free函数

在C语言编程中,动态内存分配是一个非常重要的概念。与静态内存分配不同,动态内存分配允许程序在运行时根据需要分配和释放内存,从而更加灵活地管理内存资源。特别是在一些数据结构的引用中经常需要使用,下面我们就详细讲解一下malloc函数和free函数。mallocmalloc和free是C语言中进行动态内存管理的两个核心函数。正确使用它们能够提高程序的灵活性和效率,但也需要注意潜在的内存管理问题,如内存泄漏和悬垂指针。通过遵循最佳实践和编写健壮的代码,可以有效地管理和利用动态内存,提升程序的稳定性和性能。

2024-12-22 14:38:12 713

原创 【C语言】常用函数及头文件(建议收藏,陆续更新)

想要提升自己的编程速度,了解C语言常用的一些头文件及其库函数是必不可少的过程。目录前言stdio.h输入函数输出函数文件操作函数main.h基本三角函数指对数函数舍入和取整函数stdlib.h内存管理类型转换随机数生成排序和搜索string.h总结以上是作者最常使用的C语言头文件及其常见函数,如果读者对其它头文件有需求,可以留言,作者会在该文章基础上更新。如果对某个函数用法不清楚,作者建议使用一些AI软件去解析相关函数,或者私信或评论作者。

2024-12-22 13:59:01 1639 2

原创 【C语言】特殊指针汇总

C语言的指针有多种类型,除了常用的那几类之外我们还有多种特殊指针会使用到,接下来我会介绍一下四种特殊指针,特别是空指针和野指针,在实际的编程中会经常遇到。

2024-12-20 19:57:32 670

原创 【C语言】一文讲通 &和*

在 C 语言中,和是两个非常重要的符号,它们在指针、内存管理和函数参数传递等方面起着关键作用。对于许多初学者来说,理解这两个符号的含义和用法可能会有一定的难度,但只要理清它们的关系和用途,就能够轻松掌握这部分知识。本文将详细讲解和的作用、使用场景,并通过实例帮助大家理解。是取地址符,获取一个变量在内存中的地址。是解引用符,用于访问指针指向的内存中的值。它们通常配合使用,用来获取变量的地址,用来通过指针访问地址处的值。使用和时,需要确保指针指向有效的内存地址,否则会出现运行时错误。通过理解并掌握和。

2024-12-20 19:56:10 3995 2

原创 【C语言】常见的scanf()接收异常及注意事项

scanf只是把缓存区的内容取走了,换行符却还在缓冲区中,因此下一次执行scanf时直接把换行符当输入取走了。我们需要在输入之后清除这个换行符,我们可以用getchar()这个函数,getchar会从缓冲区取走一个字符。如果缓冲区没有内容,则和scanf类似,需要我们键盘键入,但重要的是其输入只能是一个字符。作者在DEV C++中使用是没有问题的,但不同编译器不确定,因此需要注意。可能很多朋友们不知道,scanf是有返回值的,scanf的返回值是。这个函数的实际用法是接收一个字符,其返回值是。

2024-12-19 19:12:50 855

原创 【C语言】头文件”“和<>的详解

无论是哪种方式,其根本目的还是为了找到相应的头文件,<>常用于系统库头文件的引用,""常用于自定义头文件,其本质区别在于搜索头文件的目录上。两者并非一成不变的,可以根据使用者的习惯灵活使用。

2024-12-19 19:12:16 1197

原创 【C语言】指针数组和数组指针

指针数组和数组指针是C语言中经常混淆的两个概念,虽然他们的名字相似,但其含义却完全不同。指针数组:是一个数组,其元素都是指针。例如,表示一个包含5个元素的数组,每个元素都是指向int类型的指针。数组指针:是一个指针,它指向一个数组。例如,表示一个指向包含5个int类型元素的数组的指针。其实我们在大多数情况下,很少使用数组指针,因为数组指针的定义形式不如直接用int a[5]更为方便;但指针数组却在需要储存多个地址的时候经常被用到,例如字符串和二维数组。示例程序。

2024-12-18 20:00:00 339

原创 【小白51单片机专用教程】protues仿真独立按键控制LED

本课程面对纯小白,因此会对各个新出现的知识点在实例基础上进行详细讲解,有相关知识的可以直接跳过。课程涉及,所有涉及知识都将建立在实例的基础上放心食用。

2024-12-18 20:00:00 1657

原创 【C语言】指针常量和常量指针详解

指针常量和常量指针是两个完全不同的概念,其核心是表示不同内存访问权限。常量指针指针地址可改,指向的值只能读;指针常量指针地址不可改只能读,指向的值可以改。

2024-12-17 20:15:00 669

原创 【小白51单片机专用教程】protues仿真流水灯

该篇内容在硬件设计上没有太多特别,具体设计思路在protues仿真C51入门教程自定义函数以及如何用函数粗略实现定时。流水灯是多个小灯泡依次点亮,视觉上像流水一样。[储存类型符] [返回值类型符] 函数名([形参说明表])函数语句体储存类型符:一共有四种,一般情况下不写,这里不详细讲解返回值类型符:值函数运行完需要返回的东西,例如我们主函数main的返回值为void,表示空,不返回任何东西函数名:自定义函数名字,大致要求是由大小写字母或下划线组成,不能太长,第一个字符不能是数字,具体要求自行搜索。

2024-12-17 20:00:00 1849

原创 【C语言】拆解C语言的编译过程

学习C语言的过程中,涉及到各种各样的关键词,在我们点击编译的时候,都会做什么呢?让我们来拆解一下C语言的编译过程包括预处理、编译、汇编和链接四个主要步骤。每个步骤都有其特定的任务和输出文件类型,通过这些步骤,源代码被逐步转换为可执行的机器码。

2024-12-16 20:34:26 533

原创 【小白51单片机专用教程】protues仿真AT89C51入门

外设电路一般用IO口进行控制,我们先了解一下51单片机的IO口,查看手册可以获得以下消息P0口P1口P2口P3口51单片机的P0~P3口分别代表8位IO口;通过手册的信息我们可以知道,P0是漏极开路型双向IO口;而P1~P3是内部上拉电阻双向IO口。双向IO口说明该IO口可以用于输入或者输出两种用途。接下来简单讲一下漏极开路和内部上拉电阻。如果详细将漏极开路和内部上拉的话需要耗费大量的时间,这里只针对该IO口简单讲一下在这里的实际作用。漏极开路:漏极开路指的是场效应管。

2024-12-16 20:33:14 4618

原创 微分方程的叠加定理

微分方程的叠加定理适用于线性微分方程。该定理表明,对于任何线性微分方程,如果其右侧有多个已知的源项(即非齐次项),那么每个源项对应的特解之和也是原方程的一个解。换句话说,线性微分方程的解可以通过对各个源项的特解进行线性叠加得到。具体来说,设有线性非齐次微分方程LyfxLyfx其中,LLL是线性微分算子,yyy是未知函数,fxf(x)fx是已知的非齐次项。如果我们有两个源项f1xf_1(x)f1​x和f2xf_2(x)f2​x。

2024-12-03 20:06:02 3746

原创 【数据结构】【线性表】特殊的线性表-字符串

在大多数人看来,字符串仅仅是一个char类型的数组,但在作者看来,数组也是一种特殊的线性表。回想顺序表、顺序栈、顺序队列这些都和数组有着千丝万缕的联系。但在我们这里要讲的字符串,它的格式不仅仅是数组格式,数组格式只是串格式的众多种类中的一种。我们回顾。

2024-12-03 09:00:00 1253

原创 【数据结构】【线性表】一文讲完队列(附C语言源码)

队列对于元素本身只需要存储数据和next指针,但对于整个队列,非常重要的是队列的队头和队尾指针,因此在这里我们需要创建两个结构体,一个是元素结点的结构体,记录元素的数据和next指针,另一个是队列的结构体,记录队列的队头指针和队尾指针。类似的,队列可以仿照顺序表的物理结构存储方式实现顺序队列,我们也可以仿照链表的存储方式实现链式队列.同样的,链式队列也有带头结点和不带头结点的区分。将队列的头尾相接,构成循环队列,如此构建,哪怕队头和队尾指针都向一个方向增长,我们都可以让队列的每一个空间都可以利用到。

2024-11-24 19:13:05 1872

原创 【数据结构】【线性表】栈的顺序存储实现(附C语言源码)

在之前的内容中我们讲过,栈也是线性表的一种,它和顺序表以及链表的区别不在存储结构上,而是在删除和插入的操作上,栈只允许在其一端进行插入或删除的操作。这里需要注意的是,顺序结构里的出栈,不会真正的删除该元素,元素数据还保留在原来的内存中,只是从逻辑上删除了,top相当于一个盖子,让栈不会越过盖子访问下一个内存,视为删除(出栈)将顺序栈初始化为空栈,为了清除顺序栈中元素数据,可以先遍历将各元素的data设置成一个特定的值,并将栈顶指针设置为负数(因为非空栈的栈顶指针必定为非负数)

2024-11-21 21:15:00 636

原创 【数据结构】【线性表】栈的基本概念(附c语言源码)

讲基本概念还是回到数据结构的三要素:逻辑结构,物理结构和数据运算。

2024-11-21 20:30:00 669

原创 【数据结构】【线性表】【练习】反转链表II

我们发现2的next没用,因此我们先修改2的next(将3的next给2);这里需要注意的遍历,不知道你们有没有发现,就在链表的位序而言,start和then位置已经交换了,其实start已经可以视为向前一位了,遍历的时候只需要更改then指向4即可,也就是then=start->next.这是我们要的效果,但在实际操作中要十分注意你的操作顺序,这里涉及到三个结点,且要对每个结点的next都进行改变,同样的,我们也要用三个指针去操作,我们引入两个新指针start和next。观察上下两幅图,我们需要做的是。

2024-11-20 21:00:00 1653

原创 【数据结构】【线性表】顺序表和链表的比较(附C语言源码)

不同的物理结构让它们在数据运算时的操作逻辑不同,我们可以从几个角度分析顺序表和链表的差别。其实我们可以看到,无论是哪一个,它们都有各种的优缺点,我们根据实际需求进行选择。在这里,我们回顾数据结构的三要素:逻辑结构,物理结构和数据运算。

2024-11-20 20:30:00 542

原创 C语言中的二维数组

二维数组是由多个一维数组构成的。

2024-11-18 20:25:47 515

原创 【数据结构】【线性表】【练习】反转链表

有聪明的同学已经想到,那么我加一个指针cur,在p改变next之前,cur先行一步,到达下一个结点,等p改完next再跟上cur不就可以了?给你单链表的头指针head以及两个整数left和right,其中left

2024-11-18 20:24:31 1286

基于最短候梯时间的六部十层电梯群控算法(S7-1500博图V18版)

该程序是一款赛前为比赛设计(一等奖作品)的功能完备、占用内存小的电梯控制系统,基于贪心算法实现最短候梯时间,具备自动识别电梯速度模式并匹配参数、多种按键操作(双击/长按消除)、字标记法实现功能同步互斥、手动/自动检修及自动复位等完善功能,支持越位保护恢复、无载重/端站消除内呼、满载不响外呼等细节优化,采用模块化设计(FC/FB块),大幅简化程序并提升灵活性;虽未包含作者原创的客流量预测模型、交通模式识别、电梯分区与路径强制干预等核心节能高效算法(因细节待完善且出于保留原创),但已能应对90%以上的比赛需求,实用性与可靠性兼具。

2026-01-14

python新年烟花源码

需要安装对应库文件,可修改文字和颜色等,一键运行即可

2026-01-14

空空如也

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

TA关注的人

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