当前位置: 首页 > article >正文

嵌入式学习笔记——PWM与输入捕获(上)

输出比较与输入捕获前言输出比较PWMPWM简介输出比较详细框图1. 定时器部分2. 比较器控制部分3.输出控制部分寄存器简介输出比较代码伪代码实际代码实际效果总结M4系列目录前言上一篇中主要介绍了有关通用定时器的一些概述性内容本文主要是具体介绍一下输出比较与输入捕获的使用过程包括其详细结构以及寄存器其中输出捕获以常用的PWM为例输入捕获以捕获按下按键的时间为例。输出比较PWM首先来看看输出比较部分前面提到了通用定时器的通道具有输入捕获、输出比较、PWM模式、单脉冲输出模式本质上除了输入捕获以外其他三个都是属于输出比较都是通过编程控制输出高低电平的具体时间、周期循环或者单次只是具体配置的输出方式不一样其中PWM是最常用的控制方式在电机控制、调节LED、屏幕亮度、电源电压控制等等邻域都有应用。那么什么是PWM呢PWM简介PWM名称叫做脉冲宽度调制技术是一种常用于电子电路和控制系统中的信号调制技术。在实际应用中PWM广泛运用于电机驱动、灯光控制、电源电压控制等领域。因为PWM技术能够提供精准的控制使得输出信号的质量更加高效和稳定同时也减少了系统能耗和噪声干扰。其实通俗点说PWM就是一个一直循环的方波信号只是这个方波信号的周期以及高低电平的时间都是可以调节的也正是由于其周期性所以需要借助定时器来实现使用定时器去操作PWM控制的本质是操作高低电平的时间。输出比较详细框图在编程手册的15.3.4 捕获/比较通道有关于输入输出的详细电路图如下所示是通道1的主电路图其中左侧是输入捕获部分的右侧是输出比较部分的这里先看输出比较部分的。仔细观察会发现在这个框图的内容应该不全上一篇的中的输出部分还有一个输出控制器在这个图中找不到实际上不是少了只是为了方便排版官方分为了几个图找到“图 146. 捕获/比较通道的输出阶段通道 1”它所对应的电路就是输出的剩下部分这里笔者直接将两者做个拼接拼接后如下图所示这个电路图才是输出比较的实际框图还是老规矩为了好理解进行分块介绍。1. 定时器部分首先还是来看定时器的部分其实定时器部分的配置和框图和之前的基本定时一样的这里只是更详细了对照下图再捋一下定时器的配置流程1.开启对应的时钟使能2.进行时基配置包括计数器、预分频和重装载的配置关于计数器的配置其实很简单没有什么多说的这里要补充一点计数器和比较器的工作方式。如上图所示计数器的计数器会和比较器的CCR1进行比较假设我们编程控制要求当计数器的CNT大于CCR1的时候输出高电平当CNTCCR1时输出低电平这在对应通道的IO口我们就可以看见右侧IO逻辑的输出波形。同样的我们也可以编程为当CNT小于CCR1时输出高电平当CNT大于等于CCR1时输出低电平此时IO的输出波形如下图所示也就是说GPIO在啥时候输出啥电平是可以由我们进行编程控制的。2. 比较器控制部分关于比较器的控制部分其实和基本定时器的流程差不多这里我们先看下图中的红框位置他的输出是指向比较预装载寄存器和比较影子寄存器之间的这就说明由他来控制是否将预装在寄存器里面的值写入影子寄存器进而是参数对计数器产生效果。要让这个与门输出为真才可以让预装载值写入影子寄存器那么要让与门输出为真就要求后面的三个输入都是真才行接下来看与门后面的三个输入首先是1号位置它的输出在进入与门之前会有一个非对它进行取反也就说如果1号位置是非0的时候 第一个输入红框与门的信号就是0这样是无法写入数据的那么1号位置代表的是什么呢查询对应的寄存器就可以知道了如下图所示可以发现这个寄存器就是写入预装载值的在写入CCR1数据的时候1号位置会输出1使得红框的与门被卡住避免将错误数据写入影子寄存器而写入完成后1号位置会输出0此时1号输入红框与门的为真可以写入对于编程人员来说只需要对CCR1进行赋值就可以了写入完成这些不需要我们判断。然后是2号位置这里是一个或非门它的逻辑是输入全为假则为真输入有真则为真也就是说此路想要让红框的与门输出为真的话就必须保证CC1S这个寄存器的值为0才可以那么这个寄存器的值为0代表了什么呢还是在编程手册中对应搜索即可。可以发现这个寄存器是用来选择配置为输入模式还是输出模式的由于PWM是输出比较所以得配置为“00”这样也就使得或非门输出为真进而使得与门的第二个数为真。4 .最后就是红框与门的第三个输入了也就是图中的3号位置可以看出它是一个或门有两个输入且上面的输入也是带有非门标志的那么这个或门要输出真的话就要求上面的输入事件为假或者下面的输入为真那么这两个输入的事件对应的是什么呢还是看编程手册如下图所示首先是OCIPE这一位就是使能预装载的也就是说编程时可以通过控制这一位来实现预装载要不要开启。然后是下面这个事件我们先不看猜一下既然上个事件是使能或者禁止预装载那么这个预装载配套的还有个东西——就是我们前面使用基本定时器的时候提到过的更新事件如果开启了预装载寄存器那么我们要想真正的将数据写入计数器的话就必须手动产生一次更新时间才可以所以最后一个肯定是和更新事件有关的UEV更新事件。这里的配置一般都会开启预装载寄存器的。3.输出控制部分经过计数器和比较比较后的输出结果会来到下图所示的输出模式控制器这部分的电路主要就是控制输出的模式是高有效还是低有效这些那么具体怎么控制的呢。首先需要看的就是1号框内有一个数据选择器这里要注意原本的编程手册这个地方有点小问题就是选择器的选择寄存器原图中标的寄存器找不到实际是笔者图中改的TIMx_CCMR1的OC1CK,描述如下ETRF前面提到过叫做外部触发输入 (ETRF)由于PWM输出过程中不需要由外部触发的作用所以默认配置为0然后是2号框对应的OC1M这位对应位置也在CCMR1上可以发现这个寄存器分为了两部分功能其中上面第一列是控制输出功能的中间第二列是控制输入模式的他们是共用一个寄存器的。关于OC1M的作用如下图所示此三位是用来选择模式的由于我们要使用PWM模式所以就需要配置为110或者111关于PWM的模式1和PWM的模式2其实就是上面提到的有效电平的不同罢了当计数器为向上计数时PWM模式1 CNTCCR的时候为有效电平PWM模式2 CNTCCR的时候为有效电平也就是说这两个模式在其他配置都一样的情况下会生成互补的输出波形。然后就是3号红框的位置这里又是一个数据选择器但是输入信号是同一个只是其中一个进行了取反操作猜一下这个位是用来控制输出极性的具体描述如下图所示此位就是用来控制输出博信是高有效还是低有效的那么需要注意的是上面的PWM模式最终也是控制高低电平的这个也是用来控制高低电平在配置的过程中要小心。最后就是4号框所在的控制器使能位置一才可以开启对应的输出。输出比较需要配置的流程输出通道需要配置的①选择输出模式②比较寄存器的影子寄存器③选择PWM模式④选择有效电平⑤输出使能寄存器简介上面的框图讲解已经引出了大部分寄存器了这里再来做个总结将所需要用的寄存器挑出来。通用定时和高级定时器的寄存器数量还是蛮多的通用定时器就有了20个寄存器当然不是每次都需要20个寄存器只需要根据对应功能去配置对应位即可。 PWM需要使用的寄存器如下所示1.TIMx 控制寄存器 1 (TIMx_CR1)写法 TIMx-CR1位 0 CEN计数器使能位 1 UDIS更新禁止 (Update disable)位 2 URS更新请求源 (Update request source)位 3 OPM单脉冲模式 (One-pulse mode)位 4 DIR方向 (Direction)位 7 ARPE自动重载预装载使能 (Auto-reload preload enable)位 9:8 CKD时钟分频 (Clock division)输入捕获的时候涉及到采样频率2.TIMx 状态寄存器 (TIMx_SR)写法TIMx-SR位 0 UIF更新中断标志 (Update interrupt flag)位 1 CC1IF捕获/比较 1 中断标志 (Capture/compare 1 interrupt flag)3.TIMx 事件生成寄存器 (TIMx_EGR)写法TIMx-EGR位 0 UG更新生成 (Update generation)4.TIMx 捕获/比较模式寄存器 1 (TIMx_CCMR1)写法TIMx-CCMR1用于配置通道1 通道2位 1:0 CC1S捕获/比较 1 选择 (Capture/Compare 1 selection)选择输入还是输出位 3 OC1PE输出比较 1 预装载使能 (Output compare 1 preload enable)比较影子寄存器使能位 6:4 OC1M输出比较 1 模式 (Output compare 1 mode)选择对应输出模式 PWM15.TIMx 捕获/比较模式寄存器 2 (TIMx_CCMR2)写法TIMx-CCMR2功能和CCMR1完全一致 操作的是通道3 和 通道46.TIMx 捕获/比较使能寄存器 (TIMx_CCER)写法TIMx-CCER位 0 CC1E捕获/比较 1 输出使能 (Capture/Compare 1 output enable)。通道使能置1使能位 1 CC1P捕获/比较 1 输出极性 (Capture/Compare 1 output Polarity)。配置对应有效电平7.TIMx 捕获/比较寄存器 1 (TIMx_CCR1)写法TIMx-CCR1用法直接赋值不难发现整个配置过程中时基配置部分和前面的基本定时器一样的就是修改了一下定时的名字。通用定时的PWM功能只是在其基础上怎加了部分寄存器。输出比较代码根据上面的框图讲解以及寄存器的介绍总结一下使用定时器输出PWM的配置流程:伪代码PWM初始化配置{//开始对应时钟 IO口 定时器GPIO的控制器//模式寄存器//复用功能寄存器 查映射表配置定时器的时基单元部分//更新禁制//更新请求源//单脉冲//方向//重装载值影子寄存器//预分频配置//重装载值配置//人为产生更新事件配置输出通道//通道配置成输出模式//比较寄存器的影子寄存器//配置PWM模式//配置输出的有效电平//通道使能//计数器使能}//具体修改PWM输出的占空比就是通过控制比较寄存器的值CCR来实现的TIMx-CCR1****;实际代码首先找到对应需要PWM驱动的外设引脚这里笔者用的是PA6、PA7在原理图上即可查看然后再引脚映射表查找对应的映射号和对应的定时器通道分别是AF2、TIM3-CH1、TIM3-CH2;然后就是代码了如下所示/******************************************* *函数名 :Time3_PWM_Init *函数功能 :定时器三的PWM初始化配置 *函数参数 :u16 arr u16 psc *函数返回值:无 *函数描述 : PA6---------CH1 PA7---------CH2 *********************************************/voidTime3_PWM_Init(u16 psc,u16 arr){RCC-AHB1ENR|(10);//打开PA的时钟RCC-APB1ENR|(11);//打开Time3的时钟//GPIO的配置GPIOA-MODER~(0xf12);//清零GPIOA-MODER|(0xa12);//复用模式GPIOA-AFR[0]~(0xf24);//清零GPIOA-AFR[0]|(0x224);//将PA6映射到Time3的通道1//GPIOA-AFR[0] ~(0xf28);//清零GPIOA-AFR[0]~(0XF28);//清零GPIOA-AFR[0]|(228);//将PA7复用到TIM3_CH1/*-----------时基配置-----------------------------------------------------------------*/TIM3-CR1~(0Xf1);//更新禁止更新请求源关闭单脉冲向上计数TIM3-CR1|(17);//重装载影子寄存器TIM3-SMCR~(70);//配置内部时钟TIM3-PSCpsc-1;TIM3-ARRarr-1;TIM3-EGR|(10);//更新事件写入预分频和重装载值/*--------------通道部分-------------------------------------------------------------*///通道一TIM3-CCMR1~(30);//配置为输出模式TIM3-CCMR1|(13);//比较寄存器的影子寄存器TIM3-CCMR1~(0X74);TIM3-CCMR1|(0X64);//PWM模式1TIM3-CCER|(11);//低电平有效TIM3-CCER|(10);//输出通道使能//通道二TIM3-CCMR1~(38);//配置为输出模式TIM3-CCMR1|(111);//比较寄存器的影子寄存器TIM3-CCMR1~(0X712);TIM3-CCMR1|(0X612);//PWM模式1TIM3-CCER|(15);//低电平有效TIM3-CCER|(14);//输出通道使能TIM3-CR1|(10);//计数器使能}#ifndef _PWM_H #define _PWM_H #includestm32f4xx.h#define Time_PWM_Duty1TIM3-CCR1#define Time_PWM_Duty2TIM3-CCR2voidTime3_PWM_Init(u16 psc,u16 arr);#endif实际效果实现板子上两个灯PA6和PA7的呼吸灯效果占空比控制函数/******************************* 函数名TIM7_IRQHandler 函数功能定时器7中断服务函数函数 函数形参无 函数返回值void 备注1ms中断 ********************************/voidTIM7_IRQHandler(void){staticu8 LED_Flag0;staticu16 Time7_Cnt[10];if(TIM7-SR(10)){TIM7-SR~(10);Time7_Cnt[0];Time7_Cnt[1];if(Time7_Cnt[0]500){Time7_Cnt[0]0;}if(Time7_Cnt[1]2){Time7_Cnt[1]0;if(LED_Flag0)//逐渐亮{Time_PWM_Duty1;Time_PWM_Duty2;if(Time_PWM_Duty1900){LED_Flag1;Time_PWM_Duty1990;Time_PWM_Duty2990;}}if(LED_Flag1)//逐渐暗{Time_PWM_Duty1--;Time_PWM_Duty2--;if(Time_PWM_Duty150){LED_Flag0;Time_PWM_Duty110;Time_PWM_Duty210;}}}}}呼吸灯总结关于输出比较模式的PWM输出就介绍这么多由于篇幅太长影响看的体验输入捕获再单开一篇下篇进行介绍。M4系列目录1.嵌入式学习笔记——概述2.嵌入式学习笔记——基于Cortex-M的单片机介绍3.嵌入式学习笔记——STM32单片机开发前的准备4.嵌入式学习笔记——STM32硬件基础知识5.嵌入式学习笔记——认识STM32的 GPIO口6.嵌入式学习笔记——使用寄存器编程操作GPIO7.嵌入式学习笔记——寄存器实现控制LED小灯8.嵌入式学习笔记——使用寄存器编程实现按键输入功能9.嵌入式学习笔记——STM32的USART通信概述10.嵌入式学习笔记——STM32的USART相关寄存器介绍及其配置11.嵌入式学习笔记——STM32的USART收发字符串及串口中断12.嵌入式学习笔记——STM32的中断控制体系13.嵌入式学习笔记——STM32寄存器编程实现外部中断14.嵌入式学习笔记——STM32的时钟树15.嵌入式学习笔记——SysTick(系统滴答)16.嵌入式学习笔记——M4的基本定时器17.嵌入式学习笔记——通用定时器18.嵌入式学习笔记——PWM与输入捕获上19.嵌入式学习笔记——PWM与输入捕获下20.嵌入式学习笔记——ADC模数转换器21.嵌入式学习笔记——DMA22.嵌入式学习笔记——SPI通信23.嵌入式学习笔记——SPI通信的应用24嵌入式学习笔记——IIC通信

相关文章:

嵌入式学习笔记——PWM与输入捕获(上)

输出比较与输入捕获前言输出比较(PWM)PWM简介输出比较详细框图1. 定时器部分2. 比较器控制部分3.输出控制部分寄存器简介输出比较代码伪代码实际代码实际效果总结M4系列目录前言 上一篇中,主要介绍了有关通用定时器的一些概述性内容&#xf…...

别再只盯着压力表了!用分布式光纤给油气管道做个‘CT’,50公里泄漏点10米内精准定位

分布式光纤传感:重塑油气管道安全监测的下一代技术范式 油气管道如同现代工业的血管网络,承载着能源输送的重任。然而传统压力表、流量计等点式传感器就像分散的"听诊器",难以捕捉长达数百公里管道上瞬息万变的异常状态。当运维团队…...

终极指南:如何快速修复Windows软件运行环境,告别DLL缺失错误

终极指南:如何快速修复Windows软件运行环境,告别DLL缺失错误 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否遇到过这样的情况&…...

舵机控制避坑指南:PWM占空比算对了,为什么舵机还是抖得厉害?

舵机抖动问题全解析:从PWM信号到硬件设计的深度排错指南 当你按照手册精确计算了PWM占空比,连接线路也反复检查无误,但舵机依然像得了帕金森一样抖动不止——这种挫败感每个硬件开发者都深有体会。本文将从信号完整性、电源设计、机械结构三个…...

别再只会用Let‘s Encrypt了:聊聊CA的那些事儿,从免费DV到企业EV证书到底怎么选?

从免费DV到企业EV:HTTPS证书选择的实战指南 当你打开浏览器访问一个网站时,地址栏左侧的小锁图标是否曾引起你的注意?这个看似简单的符号背后,是一整套保障网络通信安全的证书体系。作为开发者或运维人员,我们常常需要…...

Pytorch图像去噪实战(二十五):多GPU训练图像去噪模型,用DDP解决训练太慢问题

Pytorch图像去噪实战(二十五):多GPU训练图像去噪模型,用DDP解决训练太慢问题 一、问题场景:模型越来越大,单卡训练太慢 前面我们实现了很多图像去噪模型。 从 DnCNN 到 UNet,再到 Restormer、Diffusion,模型越来越复杂。 单张 GPU 训练时,经常遇到: batch size 上不…...

文本到图像生成技术:从扩散模型到高效部署实践

1. 文本到图像生成技术演进与行业痛点文本到图像生成(Text-to-Image Generation)技术在过去五年经历了从玩具工具到生产力工具的质变。早期的VQ-VAE和GAN架构只能生成低分辨率、语义模糊的图像,而现代扩散模型(Diffusion Models&a…...

5分钟掌握Visual C++运行库一站式解决方案:VisualCppRedist AIO深度解析

5分钟掌握Visual C运行库一站式解决方案:VisualCppRedist AIO深度解析 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO是一个高效…...

基于Dify构建智能对话机器人:打通IM平台与AI应用的技术实践

1. 项目概述:一个为Dify打造的智能对话机器人如果你正在使用Dify来构建自己的AI应用,并且希望它能像一个真正的“同事”或“助手”一样,无缝地融入你的日常沟通工具(比如钉钉、飞书、微信),那么你很可能已经…...

CompressO终极指南:5分钟掌握免费高效的视频图片压缩技巧

CompressO终极指南:5分钟掌握免费高效的视频图片压缩技巧 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/compress…...

终极指南:gradient-checkpointing常见问题与解决方案从入门到精通

终极指南:gradient-checkpointing常见问题与解决方案从入门到精通 【免费下载链接】gradient-checkpointing Make huge neural nets fit in memory 项目地址: https://gitcode.com/gh_mirrors/gr/gradient-checkpointing gradient-checkpointing是由Tim Sali…...

AI绘画技能库构建:基于女娲模型的提示词工程实践

1. 项目概述:从“女娲”技能到AI绘画的实践探索最近在GitHub上看到一个挺有意思的项目,叫yaosenlin975-art/copaw-nuwa-skill。乍一看这个标题,可能有点摸不着头脑,但拆解一下就能发现它的核心脉络。“copaw”这个词在AI绘画圈里并…...

3步搭建Obsidian知识库:用Zettelkasten模板实现高效知识管理

3步搭建Obsidian知识库:用Zettelkasten模板实现高效知识管理 【免费下载链接】Obsidian-Templates A repository containing templates and scripts for #Obsidian to support the #Zettelkasten method for note-taking. 项目地址: https://gitcode.com/gh_mirro…...

手把手教你搞定KBS投稿:Overleaf配置、文件清单与审稿回复模板分享

KBS投稿全流程技术指南:从Overleaf配置到审稿回复的工程化实践 第一次在Knowledge-Based Systems(KBS)投稿时,我像大多数研究者一样,被复杂的文件准备和格式要求弄得手忙脚乱。直到第三次投稿后,才意识到学…...

长沙看心理医生指南:真实案例分享与选择建议

行业痛点分析当前,长沙心理服务领域的技术发展面临多重挑战。首先,公众对心理问题的认知仍存在偏差,病耻感问题广泛存在,导致轻症患者延误干预,重症患者不敢就医。测试显示,长沙某三甲医院心理咨询门诊年门…...

从厨房秤到智能仓储:HX711的‘一次函数’标定法,如何用到你的物联网项目里?

从厨房秤到智能仓储:HX711的‘一次函数’标定法在物联网中的系统级应用 当你拆开一台普通电子秤,大概率会发现这个不足5元人民币的HX711芯片正在默默工作。但鲜有人意识到,这颗24位ADC芯片的价值远不止于测量厨房食材——当它与ESP32相遇&…...

GitHub_Trending/skills23/skills气象预测:辅助收集和分析气象数据

GitHub_Trending/skills23/skills气象预测:辅助收集和分析气象数据 【免费下载链接】skills Claude Agent SDK with a web browsing tool 项目地址: https://gitcode.com/GitHub_Trending/skills23/skills GitHub_Trending/skills23/skills是一款基于Claude …...

C语言存算一体调试实战手册(ARMv8-A+RISC-V双平台真机验证)

更多请点击: https://intelliparadigm.com 第一章:C语言存算一体调试的核心概念与技术演进 存算一体(Processing-in-Memory, PIM)并非新概念,但其在嵌入式C语言开发中的调试实践正经历范式转变。传统冯诺依曼架构下&…...

别再乱接线了!STM32CubeMX配置RS232串口通信,从原理图到代码回环测试保姆级教程

STM32CubeMX实战:从零构建RS232通信系统的避坑指南 当你第一次尝试用STM32开发板连接RS232设备时,是否遇到过这些情况:接上线缆后毫无反应、收到一堆乱码、或者只能发送不能接收?这些问题90%都源于对硬件接口和软件配置的误解。本…...

如何实现外卖订单管理的数字化转型:自动化增效解决方案提升餐饮企业30%运营效率

如何实现外卖订单管理的数字化转型:自动化增效解决方案提升餐饮企业30%运营效率 【免费下载链接】waimai-crawler 外卖爬虫,定时自动抓取三大外卖平台上商家订单,平台目前包括:美团,饿了么,百度外卖 项目…...

GitHub_Trending/skills23/skills农业应用:提升农业生产效率的智能辅助工具

GitHub_Trending/skills23/skills农业应用:提升农业生产效率的智能辅助工具 【免费下载链接】skills Claude Agent SDK with a web browsing tool 项目地址: https://gitcode.com/GitHub_Trending/skills23/skills GitHub_Trending/skills23/skills是一款基于…...

构建AI助手健康监控系统:OpenClaw Guardian的设计与实现

1. 项目概述:为AI助手构建一个“贴身保镖” 如果你正在运行一个像OpenClaw这样的AI助手,尤其是让它扮演一个需要长时间、稳定运行的“协调者”或“管理者”角色,那么最让人头疼的莫过于“掉线”问题。想象一下,你的助手正在处理一…...

基于即时学习的离散制造系统能耗预测建模相似性度量【附代码】

✅ 博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。 ✅ 如需沟通交流,扫描文章底部二维码。(1)自适应粒子群优化与聚类多工况能耗预测:离散制造…...

C语言RTOS配置实战手册:2026新版CMSIS-RTOSv3内核配置7步法,零调试失败率

更多请点击: https://intelliparadigm.com 第一章:CMSIS-RTOSv3内核演进与2026配置范式变革 CMSIS-RTOSv3 不再是 CMSIS-RTOSv2 的简单迭代,而是面向异构多核 MCU、AI 加速器协同调度与安全隔离场景重构的实时操作系统抽象层。其核心变化在于…...

如何高效学习LeetCode算法?LeetCode-Solutions-in-Good-Style项目结构深度解析

如何高效学习LeetCode算法?LeetCode-Solutions-in-Good-Style项目结构深度解析 【免费下载链接】LeetCode-Solutions-in-Good-Style 首页已经更新,希望能对大家有帮助。 项目地址: https://gitcode.com/gh_mirrors/le/LeetCode-Solutions-in-Good-Styl…...

Mockbin高级用法:HTTP方法重写、内容协商和代理支持的技巧

Mockbin高级用法:HTTP方法重写、内容协商和代理支持的技巧 【免费下载链接】mockbin Insomnia Mockbin is the underlying backend for the API mocks capability of Insomnia. It is built and used by Kong, the author of the open-source Kong Gateway. 项目…...

ElaWidgetTools主题系统完全教程:轻松实现明暗主题切换

ElaWidgetTools主题系统完全教程:轻松实现明暗主题切换 【免费下载链接】ElaWidgetTools Fluent-UI For QT-Widget 项目地址: https://gitcode.com/gh_mirrors/el/ElaWidgetTools ElaWidgetTools是一款基于QT-Widget的Fluent-UI组件库,提供了强大…...

蓝天采集器性能优化:提升爬虫效率与稳定性的7个实用技巧

蓝天采集器性能优化:提升爬虫效率与稳定性的7个实用技巧 【免费下载链接】skycaiji 蓝天采集器是一款开源免费的爬虫系统,仅需点选编辑规则即可采集数据,可运行在本地、虚拟主机或云服务器中,几乎能采集所有类型的网页&#xff0c…...

Fui完整教程:从基础用法到高级配置

Fui完整教程:从基础用法到高级配置 【免费下载链接】fui Find unused Objective-C imports. 项目地址: https://gitcode.com/gh_mirrors/fu/fui Fui是一款强大的Objective-C导入优化工具,能够帮助开发者快速定位并清理项目中未使用的类和导入语句…...

GPT_ALL:基于异步函数调用的模块化AI助手核心框架开发指南

1. 项目概述:一个模块化、可扩展的AI助手核心框架 如果你正在寻找一个能够将大型语言模型(LLM)的能力,从简单的聊天对话,扩展到与真实世界数据、应用乃至硬件设备进行深度交互的解决方案,那么GPT_ALL这个项…...