- 博客(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
原创 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)f1x和f2xf_2(x)f2x。
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
原创 【数据结构】【线性表】【练习】反转链表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
原创 【数据结构】【线性表】【练习】反转链表
有聪明的同学已经想到,那么我加一个指针cur,在p改变next之前,cur先行一步,到达下一个结点,等p改完next再跟上cur不就可以了?给你单链表的头指针head以及两个整数left和right,其中left
2024-11-18 20:24:31
1286
基于最短候梯时间的六部十层电梯群控算法(S7-1500博图V18版)
2026-01-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅