自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32外部中断EXTI:原理、结构与应用

外部中断,是一种机制,是一系列的环节,英文名叫Extern Interrupt,EXTI,由命名可以知道这大概是干什么的,外部中断,顾名思义就是中断信号来自CPU外部的中断。通常是,通过监测指定GPIO口的电平信号,当其指定的GPIO口发生电平变化,EXTI向NVIC发出中断申请,NVIC裁决是否中断主程序,让CPU执行EXTI对应的中断程序。EXTI的中断通道有16个GPIO_PIN,外加四个外设,PVD输出,RTC时钟,USB唤醒,以太网唤醒。

2025-04-06 03:51:49 1064

原创 STM32:深入理解定时器与使用定时中断实现精准延时

定时器,顾名思义就是用来定时的内部外设。不同的芯片型号上搭载了不同的定时器,定时器的类型也分为高级定时器,中级定时器,基本定时器。

2025-04-06 03:51:06 1065

原创 我的创作纪念日

有句话说的好,装逼跟偷懒是人类进步的阶梯,在发布第一篇文章开始,我想的就是要装个大的。还有一个原因,那时候看了一篇文章叫做费曼学习法,通过输出倒逼自己的输入,所以我开始间歇性的选一个内容来发博客,顺便也检验自己的学习。感觉毕业之后或者以后,可能不会接触相关的行业,不一定在相关行业从业,或者自己拥有的技术被时代淘汰,但是为什么,我不对未来做过多设想,我没有什么憧憬的事情,过好现在就好咯。创作是我工作跟学习的一个动机,同时也是一个总结,占生活的部分不多,但是也很有益处,现在我保持一个月写一两个笔记。

2025-03-30 23:37:40 352

原创 STM32:关于NVIC的工作与优先级分组方式

NVIC,全称是 Nested Vectored Interrupt Controller,即嵌套向量中断控制器。它是 ARM Cortex-M 系列处理器内核的一个重要组成部分,主要用于管理中断请求,协调中断的优先级,以及控制中断的嵌套执行,使得处理器能够高效、有序地响应和处理多个中断源。这个名称是如何体现的,下面一一说明。

2025-03-24 03:08:49 1040

原创 中断:嵌入式系统的高效事件处理机制

中断是嵌入式系统中一种重要的事件处理机制。它允许单片机在执行主程序的过程中,当有特定的外部事件发生时,能够暂时中断当前的任务,转而去执行一段专门处理该事件的程序,处理完毕后再回到原来的位置继续执行主程序。这就好比你在专注地写代码,突然手机铃声响起,你暂停编码,接听电话处理重要事务,通话结束后再回到代码编辑状态,继续未完成的工作。总的来说,中断是一种节约资源的手段,也是提升程序灵活度的工具,与日常生活也很贴近,很好理解。

2025-03-24 02:39:35 322

原创 STM32:从内部电路开始教你GPIO接口的工作原理 下

书接上文。这篇文章主要讲解GPIO输出模式的工作原理

2025-03-20 21:31:09 810

原创 STM32:从内部电路开始教你GPIO接口的工作原理 上

GPIO(General-purpose input/output),通用输入输出接口,通俗的说,就是单片机的引脚,可以控制外部设备,实现单片机与外部硬件之间的连接和通讯。每个芯片上都有很多组GPIO。掌握了GPIO口差不多就掌握了操作硬件的能力。例如图上的PA0-PA15,是一组GPIO引脚。

2025-03-20 20:48:16 856

原创 PCB设计基础:电阻元件原理与应用全解析

在电子电路设计中,电阻元件如同"电子世界的交通警察",精准调控着电流的流动方向和强度。这个看似简单的二端器件,却蕴含着丰富的物理特性和工程智慧。本文将带您深入理解这个基础元件的本质特征,掌握其在电路中的核心作用,并解锁专业工程师的元件识别技巧。

2025-03-04 03:02:40 289

原创 PCB技术进化简史:从立体布线与到三维封装

1943年英国工程师保罗·艾斯勒发明的蚀刻法,用氯化铁溶液在覆铜酚醛树脂板上腐蚀出0.5mm线宽,相比传统的立体导线手工焊接,将收音机组装时间从8小时缩短至47分钟。这种单面板的介电常数高达4.8,导致信号在10MHz频率时产生12%的损耗,却为现代PCB奠定了平面布线的基础范式。1950年代贝尔实验室的"Type 100"双面板采用机械钻孔连通层间,孔径误差±0.1mm的局限催生出首套通孔镀铜标准:铜层厚度须达25.4μm以承受三次焊接热冲击。

2025-03-03 08:50:45 501

原创 通信协议的硬件与物理

有时,大家可能会注意到SPI的传输速率明显更高,这是因为其设计允许在一个时钟周期内传输多个比特数据,从而实现高效的通信。:SPI需要四根信号线:MOSI(主设备输出,从设备输入)、MISO(主设备输入,从设备输出)、SCK(时钟信号)和SS(从设备选择)。随着技术的进步,新的通信协议和硬件接口将不断出现,带来更多创新的可能性。作为未来的工程师,理解通信协议的硬件实现和物理基础是设计和优化嵌入式系统的关键。:在设计信号线时,应考虑信号线的长度和布局,尽量缩短信号线以降低电感和电容影响,从而减少信号损失。

2024-10-25 23:59:11 668

原创 通信协议的基本概念

通信协议是定义在不同设备之间进行信息交换的规则和标准。在嵌入式系统中,通信协议是实现各个组件和设备互相通信的重要基础。它确保了数据能够按照预定的格式、顺序和内容进行传输,避免了因设备间不兼容而导致的信息丢失或错误。

2024-10-25 23:48:44 874

原创 USART串口通信:配置与实践详解(下篇)

USART串口通信作为一种重要的嵌入式通信方式,凭借其高效的传输特性和灵活的配置模式,在嵌入式和物联网领域得到了广泛应用。通过对波特率、数据格式、模式的合理选择,结合中断和DMA的使用,可以进一步提升USART通信的效率和可靠性。在你的项目中,USART是如何被使用的?你是否遇到过波特率设置或数据传输的其他问题?欢迎分享你的经验和问题,我们一同探讨如何更好地使用USART串口通信。

2024-10-24 23:35:24 1442

原创 USART串口通信:原理与应用详解(上篇)

USART是通用同步异步收发器的缩写,它可以进行同步和异步两种方式的通信。异步通信通过波特率(Baud Rate)进行数据传输,同步通信则通过时钟信号来协调数据传输。在现代嵌入式设备中,USART被广泛用于与传感器、无线通信模块及其他外围设备的连接。

2024-10-24 23:30:38 2182

原创 随机森林算法的原理与实现

随机森林作为一种集成学习算法,结合了多个决策树的优点,表现出良好的分类和回归性能。它的抗过拟合能力、对噪声的鲁棒性和高泛化性使得它在实际应用中非常受欢迎。然而,随机森林也面临着计算资源消耗大和可解释性差等问题。在应用随机森林时,如何选择最优的超参数、如何合理评估特征重要性等问题,仍然是值得深入探讨的方向。你是否有使用随机森林的经验?在你的项目中,随机森林表现如何?欢迎分享你的见解和实践经验!

2024-10-20 14:20:42 1653

原创 K近邻算法(KNN)的概述与实现

KNN是一种简单但功能强大的算法,适用于分类和回归任务。然而,其计算成本和对K值的敏感性使其在处理大规模数据集或高维数据时存在一定的局限性。随着数据规模的增加,优化KNN的计算速度和性能成为一个值得探索的方向。你是否有使用KNN算法进行项目的经验?在实践中你会选择什么样的距离度量方法?欢迎分享你的看法和经验!

2024-10-20 14:10:58 1928

原创 动态规划的优化与高级应用

在资源分配问题中,动态规划通过优化计算,确保在有限的资源下实现目标最大化。比如,在项目管理中,动态规划可以用于确定最优的资源使用策略

2024-10-13 22:29:36 1385

原创 动态规划基础与经典问题

虽然动态规划可以有效解决许多问题,但其缺点也很明显:空间复杂度往往较高,尤其是在处理多维状态时,需要大量存储空间。此外,动态规划的状态定义和状态转移方程的设计往往较为复杂,要求对问题有深入的理解。

2024-10-13 22:21:12 975

原创 爬山算法:探索局部最优解的搜索算法

爬山算法(Hill Climbing Algorithm)是一种启发式搜索算法,主要用于解决优化问题。其目标是在一个解空间中找到局部最优解,或者在某些改进下尽可能接近全局最优解。与其他搜索算法(如广度优先搜索和深度优先搜索)不同,爬山算法不需要完整地遍历整个解空间,而是通过不断“爬升”到更优解来逐步接近目标。虽然爬山算法非常简单并且在某些情况下非常有效,但它也有局限性,比如可能会陷入局部最优解,或者在复杂问题上表现不佳。然而,通过合理的策略改进,爬山算法依然可以应用于许多实际问题。

2024-10-12 20:33:36 1773

原创 STM32中的DMA数据转运——下篇

在上篇文章中,我们讨论了STM32中的DMA(直接存储器访问)及其工作原理、存储器类型和总线设计。接下来,我们将更深入地探讨DMA的具体配置方法、常见应用场景以及一些实际设计中的注意事项。

2024-10-11 23:01:10 1163

原创 STM32中的DMA数据转运——上篇

DMA(Direct Memory Access,直接存储器访问)是STM32中的一个重要功能,允许外设与存储器之间直接传输数据,而不需要通过CPU参与。这不仅减轻了CPU的负担,还提高了数据传输的效率。本文将详细介绍STM32中的各种存储器地址与类型、DMA框图与总线设计、DMA的基本结构及其工作原理,包括一些常见的使用场景。

2024-10-11 22:58:31 1401

原创 STM32 输入捕获模式详解:PWM 输入捕获与 PWI 模式(续篇)

函数专门用于配置定时器的 PWI 模式,以捕获外部的 PWM 信号。该函数的核心功能是将定时器的两个输入通道(通常是 CH1 和 CH2)分别设置为捕获上升沿和下降沿信号,从而实现对 PWM 信号周期和占空比的测量。输入捕获极性设置:将一个通道(如 CH1)设置为检测上升沿,另一个通道(如 CH2)设置为检测下降沿。通道选择:为两个通道选择输入信号源,CH1 直接输入,CH2 选择间接输入。滤波和预分频器配置:设置输入信号的滤波和预分频参数。

2024-10-10 05:27:51 1128

原创 STM32输入捕获模式详解(下篇):PWM输入捕获与PWI模式

PWI模式是专为捕获PWM信号设计的输入捕获模式。在该模式下,定时器的两个输入捕获通道(通常为CH1和CH2)协同工作,通过捕获PWM信号的两个不同特征(通常是上升沿和下降沿)来实现对信号频率和占空比的测量。CH1通常用于捕获PWM信号的上升沿,以此来测量信号的周期。CH2则用于捕获PWM信号的下降沿,用于计算占空比。

2024-10-09 21:55:47 2785

原创 STM32输入捕获模式详解(上篇):原理、测频法与测周法

在嵌入式系统的开发过程中,常常需要对外部信号进行精确的时间测量,如测量脉冲信号的周期、频率以及占空比等。STM32系列微控制器提供了丰富的定时器资源,其中的输入捕获(Input Capture, IC)模式能实现对信号的上升沿或下降沿的捕获,为测量这些信号提供了强大的工具。本文将详细讲解STM32输入捕获模式的基本原理,特别是测频法和测周法,并结合STM32定时器内部电路的运行流程,解释数据是如何传输和处理的。代码部分参考标准库函数以及你给出的初始化代码。

2024-10-09 21:52:00 2480 5

原创 STM32 ADC的规则组与注入组详解(下)

STM32的ADC模块为开发者提供了高度灵活的信号采集机制。通过结合规则组与注入组的使用,开发者能够满足从定期数据采集到实时高优先级信号处理的多样化需求。此外,双ADC的配合工作和校准功能进一步提升了系统的性能和精度,使得STM32能够在多种复杂的应用场合中表现出色。开放问题:在使用STM32 ADC进行信号采集时,您是否遇到过性能瓶颈?通过双ADC和注入组的配合工作,是否能够有效改善您的应用场景中的采样需求?欢迎分享您的经验与思考。

2024-10-08 20:09:48 1771

原创 STM32 ADC的规则组与注入组详解(上)

规则组(Regular Group)是STM32 ADC最常用的转换组,主要用于常规的多通道采样。规则组可以配置多个ADC通道,并按照配置的顺序依次进行采样。它适合那些需要周期性采样的应用,如传感器数据采集、环境监控等。规则组的触发方式灵活,支持软件启动和硬件事件触发。它在不要求实时高优先级的应用场景中表现出色,通常通过定时器或外部事件进行触发,从而实现自动化的采样和处理。

2024-10-08 20:08:46 2830

原创 逐次逼近型ADC转换器(SAR ADC)的原理与应用

逐次逼近型ADC(SAR ADC,Successive Approximation Register Analog-to-Digital Converter)是一种广泛应用于模拟信号数字化的模数转换器。它以其高速度、低功耗以及适中的分辨率而著称,特别适合于各种嵌入式系统、传感器接口以及物联网设备等应用场景。本文将介绍SAR ADC的工作原理、特点以及其在实际中的应用。

2024-10-07 21:41:06 5029

原创 模拟退火算法简介

模拟退火算法(Simulated Annealing,SA)是一种基于随机化搜索的优化算法,灵感来源于金属退火过程。在金属制造中,金属被加热到高温并缓慢冷却,这一过程可以减少内部缺陷,使材料达到最优的结构。模拟退火算法通过模拟这一物理过程,以在解空间中找到全局最优解,广泛应用于组合优化、函数优化等领域。

2024-10-06 21:32:06 1225

原创 区间合并算法详解

区间合并算法虽然看似简单,但它在许多实际场景中具有广泛应用。通过先排序再逐步合并区间,可以有效处理可能重叠的区间问题。掌握这一算法,不仅有助于解决编程面试中的经典问题,也能够为处理现实中的数据提供有效的解决方案。开放性问题: 你有没有遇到过在日常开发中需要处理区间合并的问题?有哪些具体的挑战?欢迎分享你的经验或问题!

2024-10-05 19:20:57 494

原创 堆排序算法的原理与应用

堆排序作为一种高效且节省空间的排序算法,在许多大数据和系统应用中都有其独特的优势。尽管它在实际应用中的普及程度不如快速排序,但在某些特殊场景下,它凭借稳定的时间复杂度和原地排序的特性,仍然是一个有力的选择。你在实际开发中有没有遇到过需要选择堆排序的情况?相比其他排序算法,你认为它在哪些应用场景下表现更好?欢迎分享你的经验和看法!

2024-10-04 22:12:43 933

原创 哈希算法概述与应用

哈希算法在现代计算中扮演着不可或缺的角色,其应用广泛涵盖数据安全、密码存储、数据校验等领域。随着技术的不断进步,我们需要不断提升哈希算法的安全性,以应对未来潜在的威胁和挑战。你在日常开发或使用中是否遇到过哈希算法的相关问题?你对量子计算时代下哈希算法的发展有何看法?欢迎分享你的经验和见解!

2024-10-04 21:55:25 1362

原创 贪心算法:原理、应用与优化

贪心算法(Greedy Algorithm)是一种逐步构建解决方案的算法,它每次选择当前最优的局部解,期望通过局部最优解的累积,最终获得全局最优解。与动态规划等其他算法相比,贪心算法追求的是“贪心”地做出每一步最优的决策,而不是考虑整体的情况或后续可能发生的变化。然而,贪心算法并不总是能保证得到全局最优解,因此,它通常适用于满足和的问题。

2024-10-03 23:55:43 1806

原创 霍夫曼树:压缩数据的高效工具

霍夫曼树是基于贪心算法的最优二叉树。它通过对符号进行编码,以实现数据的压缩。具体来说,频率较高的符号被赋予较短的编码,而频率较低的符号则分配较长的编码。霍夫曼树通过这种变长编码方式,减少整体编码长度,从而优化数据存储。

2024-10-02 18:56:09 1080

原创 霍夫曼树及其与B树和决策树的异同

霍夫曼树是一种最优二叉树,它通过贪心算法构建,主要用于最小化编码长度。在霍夫曼编码中,频率越高的符号被分配到较短的编码,频率较低的符号被分配到较长的编码。通过这种方式,可以在不损失数据的情况下,减少整体数据的存储空间。统计频率:首先统计需要编码的每个符号的出现频率。构建优先队列:根据符号频率构建优先队列,每个节点表示一个符号。合并节点:从队列中取出两个频率最小的节点,合并为一个新节点,其频率为两个节点频率之和。重复这一过程,直到所有节点被合并为一棵完整的二叉树。生成编码。

2024-10-02 18:51:00 1783 2

原创 B树简介:高效数据存储与检索的利器

B树(B-Tree)是一种针对磁盘或大容量存储设计的平衡树结构。它不仅在内存中表现优异,还能通过减少磁盘I/O操作来提高外部存储的数据访问效率。B树的主要特点是,它能够保持平衡,并且每个节点可以包含多个键和子节点,从而减少树的深度。

2024-10-01 20:22:23 1238

原创 决策树:机器学习中的强大工具

决策树是一种通过树状结构进行决策的模型。它的每个节点代表一个特征(或属性),每个分支代表特征的可能值,而每个叶子节点则代表最终的决策结果或分类。例如,在选择晚餐时,你可以根据不同问题(如“热的还是冷的?”)逐步缩小选择范围,直到最终决定吃什么。

2024-10-01 19:47:06 627

原创 EXTI外部中断

在嵌入式系统设计中,外部中断(EXTI)是实现实时响应外部事件的关键机制。它使得微控制器能够在外部信号变化时立即做出反应,提升系统的效率和响应能力。本文将深入探讨EXTI的工作原理、配置细节、应用场景、潜在问题以及优化技巧,帮助读者全面理解这一重要概念。

2024-09-30 23:46:36 621

原创 GPIO输出模式配置选择

GPIO(通用输入输出)口在嵌入式系统中同样扮演着至关重要的角色,特别是在输出模式下,微控制器可以向外部设备发送信号,从而控制LED、继电器、马达等各种外部元件。本文将探讨GPIO输出模式中的推挽输出、开漏输出和复用输出的配置、使用场景及注意事项,帮助读者在实际项目中做出合适的配置选择。

2024-09-30 23:37:23 979

原创 关于GPIO输入模式的配置选择

GPIO(通用输入输出)口是嵌入式系统中的重要组成部分,输入模式使得微控制器能够与外部世界进行交互。本文将探讨GPIO输入模式中的浮空输入、上拉输入和下拉输入的配置、使用场景及注意事项,并提供一些决策指导,帮助读者在实际项目中做出合适的配置选择。

2024-09-29 22:23:07 1125

原创 STM32编码器接口解析及抗噪声措施探讨

STM32编码器接口为精确的旋转位置和速度控制提供了强大的支持。通过合理的电路连接、清晰的工作逻辑、适当的工作模式和抗噪声措施,可以方便地实现对编码器的读取和控制。就像骑自行车时,通过感知和调整,你可以顺畅地到达目的地,编码器同样为自动化系统的精确运行提供了保障。

2024-09-29 17:36:09 1984

原创 STM32正交编码器的结构与工作原理

STM32的正交编码器接口为精确的旋转位置和速度控制提供了强大的支持。通过合理的硬件连接和软件配置,可以方便地实现对编码器的读取和控制。这为电机驱动、机器人控制及其他自动化系统的应用打下了基础。就像音量旋钮在控制音量时需要精确反馈,正交编码器则为各类设备提供了必要的反馈信息,使得控制系统更加智能和高效。

2024-09-28 23:32:04 1529

基于c语言的学生管理系统

这是一个结构完整、功能明确的学生管理系统项目。项目采用C语言开发,使用了结构体、数组、文件操作等基础技术,实现了学生信息的CRUD操作。代码组织清晰,有完整的数据持久化处理。文档非常详尽,包含了项目介绍、功能需求、技术说明、数据结构设计、界面说明和扩展需求等内容。

2025-03-04

基于C语言开发的温度转换器程序

## 项目介绍 这是一个基于C语言开发的温度转换器程序,可以实现摄氏度与华氏度之间的相互转换。该程序采用简洁的菜单界面,用户友好,操作简单。帮助初学者学习C语言开发 ## 功能特点 - 支持摄氏度转华氏度 - 支持华氏度转摄氏度 - 清晰的菜单界面 - 精确的温度计算 - 良好的用户交互体验 ## 技术要点 本项目涵盖了以下C语言基础知识点: 1. 函数的声明和定义 2. 变量的使用(int、double类型) 3. 输入输出操作(scanf、printf函数) 4. 条件语句(switch-case结构) 5. 循环结构(do-while循环) 6. 数学公式的实现 7. 模块化程序设计

2025-03-03

基于C语言开发的猜数字游戏程序

## 项目介绍 这是一个基于C语言开发的猜数字游戏程序。游戏会随机生成一个1到100之间的数字,玩家需要通过多次猜测找出这个数字,每次猜测后程序会提示数字是太大还是太小,直到猜中为止。帮助初学者学习 ## 功能特点 - 随机数生成 - 即时反馈(大/小提示) - 尝试次数统计 - 可重复游戏 - 简洁友好的用户界面

2025-03-03

基于C语言开发的图书管理系统

这是一个基于C语言开发的图书管理系统,可以实现图书信息的添加、查询、借阅和归还等功能。该系统采用文件存储图书数据,实现数据的持久化保存,并通过菜单界面提供友好的用户交互体验。本项目涵盖了以下C语言基础和进阶知识点: 1. 结构体的定义和使用 2. 文件操作(fopen、fclose、fread、fwrite) 3. 字符串处理(strcmp、strcpy、strstr) 4. 数组管理和操作 5. 函数的模块化设计 6. 条件语句和循环结构 7. 数据的增删改查操作 8. 输入验证和错误处理

2025-03-03

基于C语言开发的简单计算器程序

## 项目介绍 这是一个基于C语言开发的简单计算器程序,专门为C语言初学者设计。通过这个项目,你可以很好地掌握C语言的基本语法和编程概念。 ## 功能特点 - 支持基本的四则运算(加、减、乘、除) - 使用双精度浮点数,支持小数计算 - 具有输入验证功能,防止除零错误 - 清晰的用户交互界面 ## 技术要点 本项目涵盖了以下C语言基础知识点: 1. 变量声明和使用(double、char类型) 2. 基本输入输出操作(scanf、printf函数) 3. 运算符的使用(算术运算符) 4. 条件语句(switch-case、if-else结构) 5. 程序流程控制 6. 基本的错误处理

2025-03-03

空空如也

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

TA关注的人

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