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

蓝桥杯_PCF8591

目录

一 前言

二 引言

三 PCF8591介绍

(1)I2C通信

 (2)原理图中的8591

四 代码层面

(1)根据题目所给的示范代码,实现ADC

1 为什么需要返回值,同时返回值是unsigned char?

2 为什么发送地址是0x90?

 (2)根据题目所给的示范代码,实现DAC

main.c

为什么需要转化成unsigned int?


一 前言

  本次关于PCF8591的学习,我们主要学ADC和DAC板块,主要的目标是通过旋转蓝桥杯板子上的旋钮(电压采集)和边上的光敏电阻,来实现PCK8591_ADC板块的转换,本次也会教DAC的转换,但并不写相关代码调试

二 引言

我们知道,在电路中传输的信号只有两种,分别是数字信号和模拟信号,模拟信号更像一个个具体的数值,数字信号只由0和1构成。将模拟信号转换为数字信号,我们把这个过程称之为ADC转化,A表示模拟信号,D表示数字信号,所衍生出来了两种技术:模拟-数字转换ADC技术、数字-模拟转换DAC技术,一般来说,我们用模拟-数字转换ADC技术用的比较多,我也会着重去讲ADC技术。(大家不要把ADC想成王者荣耀里面的射手位置啊!!)

三 PCF8591介绍

(1)I2C通信

在蓝桥杯比赛中提供的板子原理图中,上面这张照片就是PCF8591的原理图,大家仔细观察本章图片的右下角位置,你会发现:P20、P21后面的SCL和SDA,这两个线就是I2C的核心线,I2C需知道的相关底层知识点,如若不理解I2C通信,推荐大家去哔哩哔哩看这个博主的视频

【4分钟看懂!I2C通讯协议 最简单的总线通讯!】 https://www.bilibili.com/video/BV1dg4y1H773/?share_source=copy_web

1 SDA:提供信息通道       SCL:提供精确的频率        GND:接地线

2 当SCL为高电平时:(1)SDA从高到低的跳变为开始信号(2)SDA从低到高的跳变为结束信号

3 主机每次发送信息只能发送八个二进制数(1字节byte)

4 先写在读

大家先对上面这张图片有所印象,我会在后面结合比赛给提供的代码中进行添加代码讲解,因为比赛所提供的范例代码已经包含上面这个过程了

 (2)原理图中的8591

现在我们观察左上角的这个几个位置,这几个位置是决定着PCF8591该作用到那个地方,例如下图(从原理图中摘出来的部分)+对应功能的地址(代码要写对应的地址):

地址对应的功能
AIN10x41光敏电阻
AIN30x43滑动变阻器

四 代码层面

(1)根据题目所给的示范代码,实现ADC

我们先看一下范例代码给我们提供了什么:

static void I2C_Delay(unsigned char n);//延时函数
void I2CStart(void); //开始信号
void I2CStop(void);  //停止信号
void I2CSendByte(unsigned char byt);//发送一个字节
unsigned char I2CReceiveByte(void); //接收一个字节
unsigned char I2CWaitAck(void);//等待响应
void I2CSendAck(unsigned char ackbit);//发送应答位

我们根据上面比赛提供的代码进行ADC转换,由于我们知道在板子上ADC有两个,分别是光敏电阻和滑动变阻器,所以我们需要在代码书写的时候要进行选择,引入入口参数channel_num,再在对应的.h文件中,将两个参数进行宏定义,我们如果想要用哪个功能只需要给对应的函数进行更换入口参数即可。

#define Photo_Res_Channel 0x41 //光敏电阻
#define Adj_Res_Channel 0x43   //滑动变阻器

在官方给的IIC.c文件中的最下面添加相应的代码:

unsigned char Pcf8591_Adc(unsigned char channel_num_contrl)
{unsigned char temp;I2CStart();//发送开启信号I2CSendByte(0x90);//选择PCF8591芯片,确定写的模式I2CWaitAck();//等待PCF8591反馈I2CSendByte(channel_num_contrl);//确定要转换的通道(顺便,使能DA转换)I2CWaitAck();//等待PCF8591反馈	I2CStart();//发送开启信号I2CSendByte(0x91);//选择PCF8591芯片,确定读的模式I2CWaitAck();//等待PCF8591反馈	temp = I2CReceiveByte();//接收数据I2CSendAck(1);//选择不应答I2CStop();//停止发送return temp;}
1 为什么需要返回值,同时返回值是unsigned char?

函数内部通过 IIC 总线从 PCF8591 读取的数据(存储在 temp中),temp是转换结果,必须通过返回值返回给用户,否则无法获取 ADC 结果

PCF8591 是一个 8 位 ADC(模数转换器)

2 为什么发送地址是0x90?

0x90 = 1001 0000,高四位分别是1001,1001的意思就是PCF8591,然后最后一位决定着读还是写,0是写,1是读,再看上面PCF8591的原理图的A1 2 3部分,他们仨是接地的,所以0x90的意思就是我PCF8591要写数据了,若不理解,就背下来!!!

 整体的一个代码过程就是:

开始信号 -> 写 -> 等待应答

告诉单片机对应的通道 -> 等待应答

开始信号 -> 读 - > 等待应答

将接受到的数据给temp -> 8591告诉单片机不应答 -> 停止信号

 (2)根据题目所给的示范代码,实现DAC

 同样,在iic.c文件中,继续添加相应的DAC转换代码:

void Pcf8591_Dac(unsigned char trans_dat)
{I2CStart();//发送开启信号I2CSendByte(0x90);//选择PCF8591芯片,确定写的模式I2CWaitAck();//等待PCF8591反馈I2CSendByte(0x41);//使能DA转换(随便写通道编号,不影响,主要的功能是使能DA)I2CWaitAck();//等待PCF8591反馈        I2CSendByte(trans_dat);//将待转换的数据发送出去I2CWaitAck();//等待PCF8591反馈    I2CStop();//停止发送    }

注意:

这里和上面ADC很多地方不一样,这里不用接收信号函数  I2CReceiveByte(),以及不用引用其他变量

main.c

在main.c中,仅需添加一种新的情况,全部代码我就不写了,和本专题前面的main文件中的代码类似,请大家认真阅读曾经的文章

case 4:sprintf(seg_string,"%4d%4d",(unsigned int)PCF8591_ADC(Photo_Res_Channel ),(unsigned int)PCF8591_ADC(Adjust_Channel));//为什么最后显示的是左边是光敏电阻,右边是光敏电阻break;

这里面我们也需要将ADC读取的光敏电阻传到数码管上,需要利用上面这行代码

为什么需要转化成unsigned int?

因为PCF8591_ADC,这个函数的返回值是unsigned char,数码管显示不了字符型(char),所以我们需要将返回值强行转化成unsigned int类型

相关文章:

蓝桥杯_PCF8591

目录 一 前言 二 引言 三 PCF8591介绍 (1)I2C通信 (2)原理图中的8591 四 代码层面 (1)根据题目所给的示范代码,实现ADC 1 为什么需要返回值,同时返回值是unsigned char&#x…...

Windows修改hosts文件让向日癸软件联网

Windows修改hosts文件让向日癸软件联网 前言一、查看向日葵软件使用的网址及IP1.清除dns记录2.打开向日葵软件并将dns记录导出txt 二、修改Windows服务器的hosts文件1.winx选择Windows PowerShell(管理员)2.在Windows PowerShell中输入如下内容:3.在hosts文件最后添…...

[MySQL初阶]MySQL数据类型

MySQL数据类型 1. 数据类型分类2. 数值类型2.1 tinyint类型2.2 bit类型2.3 float类型2.4 decimal类型3. 字符串类型3.1 char3.2 varchar3.3 日期和时间类型3.4 enum和set1. 数据类型分类 数据库中的类型决定了在存储位置中,占据的空间大小以及如何识别的问题。 2. 数值类型 2…...

JS用ES6和ES5分别实现:8字节长整数和字节数组的互转

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...

【学Rust写CAD】29 Alpha256结构体(alpha256.rs)

源码 #[derive(Clone, Copy)] pub struct Alpha256(u32);impl Alpha256{#[inline]pub fn from(alpha:u32)->Alpha256{Alpha256(alpha1)}// Calculates 256 - (value * alpha256) / 255 in range [0,256],// for [0,255] value and [0,256] alpha256.#[inline]fn alpha_mul_…...

Titanic - Machine Learning from Disaster

数据集 通过网盘分享的文件: 链接: https://pan.baidu.com/s/17TLeF8PW2GSWTbAIJC69-A?pwd4dak 提取码: 4dak 准备工作 # 导入必要的库 import numpy as np # 用于数值计算(如矩阵运算、数学函数等) import pandas as pd # 用于数据…...

GoFrame框架中Prometheus Metric组件监控的优势与实践

文章摘要 GoFrame 是一款轻量、高效且模块化的 Go 语言全能型框架,在 Go 生态中以其企业级应用能力和简洁设计受到开发者青睐。随着微服务架构的普及,性能监控成为开发中不可或缺的一环,而 Prometheus 凭借其强大的时间序列数据处理能力和灵…...

SQL语言的物联网

以SQL语言的物联网 引言 物联网(IoT,Internet of Things)作为一个新兴的技术领域,正迅速改变着我们的生活方式和工作模式。它通过将各种物体连接到互联网,实现了设备之间的智能通信与数据交换。随着物联网的普及&…...

戴尔笔记本 ubuntu 22.04 开机后进入initramfs界面

问题 在 Ubuntu 22.04 启动时进入 initramfs 界面,并提示 Gave up waiting for root device. Common problems: - Boot args (cat /proc/cmdline)- Check rootdelay (did the system wait long enough?) - Missing modules (cat /proc/modules; ls /dev) ALERT! …...

JavaScript BOM、事件循环

目录 BOM(浏览器对象模型) 一、window 对象 1. 窗口控制 2. 定时器 二、location 对象 三、navigator 对象 四、history 对象 五、screen 对象 六、本地存储 1. localStorage 2. sessionStorage 七、BOM 应用场景 八、总结 JavaScript 执行…...

归并排序算啊模板and三道困难级别的归并力扣算法题--LCR170,493,315

目录 归并排序算法模板: 1.1题目链接:LCR.170.交易逆序对的总数 1.2题目描述: 1.3解法(利用归并排序的过程--分治): 2.1题目链接:315.计算右侧小于当前元素的个数 2.2题目描述: 2.3解法: …...

鸿蒙 harmonyOS:项目实战 :倒计时器

代码: import { promptAction } from kit.ArkUIEntry Component struct Index {State count: number 10 // 初始倒计时秒数State timerId: number -1 // 定时器ID// 开始倒计时startCountdown() {if (this.timerId -1) {this.timerId setInterval(() > {if …...

31--当认证协议开始“选秀“:RADIUS、LDAP、AD与本地认证的C位之争

当认证协议开始"选秀":RADIUS、LDAP、AD与本地认证的C位之争 引言:认证界的"四大天王" 如果把企业网络比作夜店,那么身份认证就是门口的黑衣保安。不同风格的保安队长各有绝活: RADIUS像特种兵出身的安检专家…...

AI 数理逻辑基础之统计学基本原理(上)

目录 文章目录 目录统计学统计学基本概念描述性统计数据可视化图表工具 汇总统计统计数据的分布情况:中位数、众数、平均值统计数据的离散程度:极差、方差、标准差、离散系数 相关分析Pearson 线性关系相关系数Spearman 单调关系相关系数 回归分析回归模…...

C++容器数据类型定义、测试用例

C11 标准库提供了多种容器类型&#xff0c;每种容器定义了多个成员类型&#xff08;如 value_type、iterator 等&#xff09;&#xff0c;用于与容器交互。以下详细说明各容器的数据类型定义、测试用例及注意事项。 一、顺序容器 1. std::vector<T> 类型定义&#xff1…...

bun 版本管理工具 bum 安装与使用

在使用 node 的过程中&#xff0c;我们可能会因为版本更新或者不同项目的要求而频繁切换 node 版本&#xff0c;或者是希望使用更简单的方式安装不同版本的 node&#xff0c;这个时候我们一般会用到 nvm 或者类似的工具。 在我尝试使用 bun 的时候&#xff0c;安装前第一个想到…...

AI——使用numpy

文章目录 一、numpy的介绍1、ndarray介绍2、ndarray使用1、ndarray的属性2、ndarray生成数组的方法 3、修改数组的形状4、修改数组的类型5、数组去重 二、数组的运算1、逻辑运算2、通用判断函数3、三元运算符4、统计运算 三、数组间运算四、数学&#xff1a;矩阵 一、numpy的介…...

在线追思:一个虚拟扫墓平台,让思念不受时空限制

在线追思&#xff1a;一个虚拟扫墓平台&#xff0c;让思念不受时空限制 &#x1f4e2; 重要分享 今天想与大家分享一个特别的网站——在线追思平台。这是一个让我们能随时随地表达对逝者思念之情的虚拟扫墓平台。 &#x1f31f; 为什么需要在线追思&#xff1f; 在现代生活的…...

Visual Basic语言的网络协议栈

Visual Basic语言的网络协议栈 引言 在当今信息技术高速发展的时代&#xff0c;网络通信已经成为各类应用程序中不可或缺的部分。无论是网页浏览、文件传输&#xff0c;还是即时通讯&#xff0c;网络协议的有效实现都是保证数据顺利传输和信息安全的重要基础。在这种背景下&a…...

python速通小笔记-------4.Pandas库

1.pandas介绍 1.一维数组的创建 1.字典创建法-----------pd.Series(字典&#xff09; 使用pd.Series(),参数为已经创建好了的字典 2.数组创建法-----------pd.Series(列表1&#xff0c;index列表2&#xff09; 2.一维对象的属性 sr.values----------查看所有的vsr.index----…...

P7453 [THUSC 2017] 大魔法师 Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​)&#xff0c; b ( b 1 , b 2 , ⋯ , b n ) b(b_1,b_2,\cdots,b_n) b(b1​,b2​,⋯,bn​) 和 c ( c 1 , c 2 , ⋯ , c n ) c(c_1,c_2,\cdots,c_n) c(c1​,c2​,⋯,cn​)&…...

小程序API —— 58 自定义组件 - 创建 - 注册 - 使用组件

目录 1. 基本介绍2. 全局组件3. 页面组件 1. 基本介绍 小程序目前已经支持组件化开发&#xff0c;可以将页面中的功能模块抽取成自定义组件&#xff0c;以便在不同的页面中重复使用&#xff1b;也可以将复杂的页面拆分成多个低耦合的模块&#xff0c;有助于代码维护&#xff1…...

#Liunx内存管理# 在32bit Linux内核中,用户空间和内核空间的比例通常是3:1,可以修改成2:2吗?

在32位Linux内核中&#xff0c;用户空间和内核空间的3:1默认比例可以修改为2:2&#xff0c;但需要权衡实际需求和潜在影响。以下是具体分析&#xff1a; 一、修改可行性 1.技术实现 通过内核启动参数调整虚拟地址空间划分&#xff0c;例如在GRUB配置中添加mem2G参数&#xff0c…...

经济统计常见的同比与环比是啥意思?同比和环比有什么区别?

在经济统计领域&#xff0c;其实大家都会经常性看到同比还有环比&#xff0c;可人们对此就会觉得有些疑惑。到底是什么意思&#xff1f;这两者之间又有什么样的区别呢&#xff1f;下面就为大家来详细的介绍一下。 同比与环比是用于衡量数据变化趋势的关键指标&#xff0c;可以给…...

前端知识点---本地存储(javascript)

localStorage 是浏览器提供的一个 本地存储 API&#xff0c;可以在用户的浏览器中存储数据&#xff0c;数据不会随页面刷新而丢失。 1. 基本用法 (1) 存储数据&#xff08;setItem&#xff09; localStorage.setItem("username", "zhangsan");存储 “use…...

压测工具开发实战篇(二)——构建侧边栏以及设置图标字体

你好&#xff0c;我是安然无虞。 文章目录 构建侧边栏QtAwesome使用调整侧边栏宽度了解: sizePolicy属性伪状态 在阅读本文之前, 有需要的老铁可以先回顾一下上篇文章: 压测工具开发(一)——使用Qt Designer构建简单界面 构建侧边栏 我们要实现类似于下面这样的侧边栏功能: …...

【Java Stream详解】

文章目录 前言一、Stream概述1.1 什么是 Stream&#xff1f;1.2 Stream 和集合的区别 二、Stream的创建方式2.1 基于集合创建2.2 基于数组创建2.3 使用 Stream.generate()2.4 使用 Stream.iterate() 三、Stream常见操作3.1 中间操作&#xff08;Intermediate&#xff09;① fil…...

16进制在蓝牙传输中的应用

在蓝牙传输中&#xff0c;16进制&#xff08;Hexadecimal&#xff09;是一种常用的数据表示方法。它主要用于描述数据包的内容、地址、命令、参数等信息。以下是16进制在蓝牙传输中的具体应用场景和作用&#xff1a; 1. 数据包的表示 蓝牙通信中&#xff0c;所有数据最终都以二…...

TypeConverter

文章目录 基本描述主要功能接口源码主要实现最佳实践与其他组件的关系常见问题 基本描述 TypeConverter接口是Spring框架中用于在SpEL&#xff08;Spring表达式语言&#xff09;中进行类型转换的核心接口&#xff0c;它允许将不同类型的对象相互转换&#xff0c;例如将字符串转…...

优化 Web 性能:压缩 CSS 文件(Unminified CSS)

在 Web 开发中&#xff0c;CSS 文件的大小直接影响页面加载速度和用户体验。Google 的 Lighthouse 工具在性能审计中特别关注“未压缩的 CSS 文件”&#xff08;Unminified CSS&#xff09;&#xff0c;指出未经过压缩的样式表会增加不必要的字节&#xff0c;拖慢页面渲染。本文…...

每日一个小病毒(C++)EnumChildWindows+shellcode

这里写目录标题 1. `EnumChildWindows` 的基本用法2. 如何利用 `EnumChildWindows` 执行 Shellcode?关键点:完整 Shellcode 执行示例3. 为什么 `EnumChildWindows` 能执行 Shellcode?4. 防御方法5. 总结EnumChildWindows 是 Windows API 中的一个函数,通常用于枚举所有子窗…...

leetcode数组-移除元素

题目 题目链接&#xff1a;https://leetcode.cn/problems/remove-element/ 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为…...

Git 教程:从 0 到 1 全面指南 教程【全文三万字保姆级详细讲解】

目录 什么是 Git &#xff1f; Git 与 SVN 区别 Git 安装配置 Linux 平台上安装 Centos/RedHat 源码安装 Windows 平台上安装 使用 winget 工具 Mac 平台上安装 Git 配置 用户信息 文本编辑器 差异分析工具 查看配置信息 生成 SSH 密钥&#xff08;可选&#xf…...

在 Android Studio 中运行安卓应用到 MuMu 模拟器

一、准备工作 1、​​确保 MuMu 模拟器已正确安装并启动​​ 从官网下载安装最新版 MuMu 模拟器。启动后&#xff0c;建议在设置中调整性能参数&#xff08;如 CPU 核心数和内存分配&#xff09;&#xff0c;以保证流畅运行。 2、​​配置 Android Studio 环境​&#xff08;按…...

stable diffusion部署ubuntu

stable-diffusion webui: https://github.com/AUTOMATIC1111/stable-diffusion-webui python3.10 -m venv venv&#xff08;3.11的下torch会慢得要死&#xff09; source venv/bin/activate 下载checkpoint模型放入clip_version"/home/chen/软件/stable-diffusion-webu…...

《概率论与数理统计》期末复习笔记_下

目录 第4章 随机变量的数字特征 4.1 数学期望 4.2 方差 4.3 常见分布的期望与方差 4.4 协方差与相关系教 第5章 大数定律和中心极限定理 5.1 大数定律 5.2 中心极限定理 第6章 样本与抽样分布 6.1 数理统汁的基本概念 6.2 抽样分布 6.2.1 卡方分布 6.2.2 t分布 6.…...

Java异步编程实战:线框-管道模型的设计与实现

一、什么是线框-管道模型&#xff1f; 线框-管道模型&#xff08;Pipeline-Filter Pattern&#xff09;是一种经典的数据处理架构&#xff0c;其核心思想是将复杂任务拆分为多个独立的处理阶段&#xff08;Filter&#xff09;&#xff0c;通过管道&#xff08;Pipe&#xff09…...

Linux make与makefile 项目自动化构建工具

本文章将对make与makefile进行一些基础的讲解。 假设我们要建造一座房子&#xff0c;建造过程涉及很多步骤&#xff0c;比如打地基、砌墙、安装门窗、粉刷墙壁等。每个步骤都有先后顺序&#xff0c;并且有些步骤可能依赖于其他步骤的完成。比如&#xff0c;你必须先打好地基才…...

鸿蒙 harmonyOS 网络请求

应用通过HTTP发起一个数据请求&#xff0c;支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 接口说明 HTTP数据请求功能主要由http模块提供。 使用该功能需要申请ohos.permission.INTERNET权限。 第一步 &#xff1a; 在module.json5文件里面添加网络…...

【Tauri2】014——简单使用listen和emit

前言 【Tauri2】013——前端Window Event与创建Window-CSDN博客https://blog.csdn.net/qq_63401240/article/details/146981362?spm1001.2014.3001.5502【Tauri2】012——on_window_event函数-CSDN博客https://blog.csdn.net/qq_63401240/article/details/146909801?spm1001…...

解锁 C 语言安全新姿势:C11 安全函数全解析

一、开篇&#xff1a;C 语言安全的新护盾 在 C 语言的编程世界里&#xff0c;缓冲区溢出等安全问题犹如潜藏的暗礁&#xff0c;时刻威胁着程序的稳定与安全。为了有效应对这些挑战&#xff0c;C11 标准引入了一系列安全函数&#xff0c;也被称为 “Annex K” 标准库函数。这些…...

【centos】经常使用的脚本

磁盘挂载 yum install wget -y && wget -O auto_disk.sh http://download.bt.cn/tools/auto_disk.sh && bash auto_disk.shYum镜像源更换 bash <(curl -sSL https://linuxmirrors.cn/main.sh)Yum切换安装的java版本 sudo alternatives --config java...

Unity URP渲染管线详解

一、URP概述 Universal Render Pipeline (URP&#xff0c;通用渲染管线)是Unity推出的轻量级、高性能渲染管线解决方案&#xff0c;适用于移动平台、PC和主机等多种平台。 URP核心特点 跨平台支持&#xff1a;针对不同硬件自动优化 模块化设计&#xff1a;可扩展的渲染功能 …...

Python语言的测试用例设计

Python语言的测试用例设计 引言 随着软件开发的不断进步&#xff0c;测试在软件开发生命周期中的重要性日益凸显。测试用例设计是软件测试的核心&#xff0c;它为软件系统的验证和验证提供了实施的基础。在Python语言中&#xff0c;由于其简洁明了的语法和强大的内置库&#…...

【记录】kali制作绕过火绒检测的木马(仅通过MSF的方式)

目的&#xff1a;制作一个能够绕过火绒检测的简单木马&#xff0c;熟悉一下怎么使用msfvenom制作木马&#xff0c;因此此处使用的火绒版本较低。 工具准备&#xff1a;火绒安全-3.0.42.0 【点击免费下载工具】 **实验环境&#xff1a;**kali-2019.4 &#xff08;攻击方&…...

Linux系统进程

Linux系统进程 程序开始 编译链接的引导代码 操作系统下的应用程序在main执行前也需要先执行段引导代码才能去执行main&#xff0c;但写应用程序时不用考虑引导代码的问题&#xff0c;编译连接时&#xff08;准确说是链接时&#xff09;由链接器将编译器中事先准备好的引导代码…...

Obsidian按下三个横线不能出现文档属性

解决方案: 需要在标题下方的一行, 按下 键盘数字0后面那个横线(英文横线), 然后回车就可以了 然后点击横线即可...

GitHub 上开源一个小项目的完整指南

GitHub 上开源一个小项目的完整指南 &#x1f680; 第一步&#xff1a;准备你的项目 在开源之前&#xff0c;确保项目是可用且有一定结构的&#xff1a; ✅ 最低要求 项目文件清晰、结构合理&#xff08;比如&#xff1a;src/、README.md、LICENSE&#xff09;项目能在本地正…...

大模型——MCP 集成至 LlamaIndex 的技术实践

MCP 集成至 LlamaIndex 的技术实践 一、前言 本文主要介绍了如何将 MCP(Model Context Protocol,模型上下文协议)工具转换为可以直接使用的 LlamaIndex 工具,使 LlamaIndex 用户能像使用 Claude, Cursor 等现代 AI 应用一样无缝集成这些服务。 二、技术背景 2.1 什么是…...

leetcode 1123. 最深叶节点的最近公共祖先

给你一个有根节点 root 的二叉树&#xff0c;返回它 最深的叶节点的最近公共祖先 。 回想一下&#xff1a; 叶节点 是二叉树中没有子节点的节点树的根节点的 深度 为 0&#xff0c;如果某一节点的深度为 d&#xff0c;那它的子节点的深度就是 d1如果我们假定 A 是一组节点 S …...