3、nFR52xx蓝牙学习(点亮第一个LED灯)
#ifndef __LED_H
#define __LED_H#include "nrf52840.h"#define LED_0 NRF_GPIO_PIN_MAP(0,13)
#define LED_1 NRF_GPIO_PIN_MAP(0,14)
#define LED_2 NRF_GPIO_PIN_MAP(0,15)
#define LED_3 NRF_GPIO_PIN_MAP(0,16)void LED_Init(void);
void LED1_Open(void);
void LED1_Close(void);
void LED1_Toggle(void);
void LED2_Open(void);
void LED2_Close(void);
void LED2_Toggle(void);
void LED3_Open(void);
void LED3_Close(void);
void LED3_Toggle(void);#endif /* __LED_H */
led.c文件
#include "nrf52840.h"
#include "nrf_gpio.h"
#include "led.h"
#include <stdio.h>
/*
#define ITM_PORT8(n) (*(volatile unsigned char *)(0xe0000000 + 4*(n)))
#define ITM_PORT16(n) (*(volatile unsigned short *)(0xe0000000 + 4*(n)))
#define ITM_PORT32(n) (*(volatile unsigned long *)(0xe0000000 + 4*(n)))
#define DEMCR (*(volatile unsigned long *)(0xE000EDFC))
#define TRCENA 0X01000000int fputc(int ch, FILE *f)
{if(DEMCR & TRCENA){while(ITM_PORT32(0) == 0); ITM_PORT8(0) = ch;}return ch;
}
*/
void LED_Init(void)
{// Configure LED-pins as outputsnrf_gpio_cfg_output(LED_0);nrf_gpio_cfg_output(LED_1);nrf_gpio_cfg_output(LED_2);
}void LED1_Open(void)
{nrf_gpio_pin_clear(LED_0);//设置低电平}void LED1_Close(void)
{nrf_gpio_pin_set(LED_0);//高电平}
void LED1_Toggle(void)
{nrf_gpio_pin_toggle(LED_0);
}
void LED2_Open(void)
{nrf_gpio_pin_clear(LED_1);}void LED2_Close(void)
{nrf_gpio_pin_set(LED_1);}
void LED2_Toggle(void)
{nrf_gpio_pin_toggle(LED_1);
}void LED3_Open(void)
{nrf_gpio_pin_clear(LED_2);}void LED3_Close(void)
{nrf_gpio_pin_set(LED_2);}
void LED3_Toggle(void)
{nrf_gpio_pin_toggle(LED_2);
}
二、代码解析(有些地方看文档不懂,是本人胡乱解析的,不对别喷,谢谢!)
1.NRF_GPIO_PIN_MAP是一个带参数的宏,在nrf_gpio.h中定义如下:
#define NRF_GPIO_PIN_MAP(port, pin) (((port) << 5) | ((pin) & 0x1F))
其用途是把端口号与引脚号映射成nrf_gpio函数能理解的值。在 Nordic 的 nRF 系列芯片里,
GPIO 引脚通常用一个 32 位整数来表示,这个整数融合了端口号和引脚号的信息。
(port) << 5) | ((pin) & 0x1F):使用按位或操作符将移位后的端口号和引脚号组合起来,从而得到一个唯一的整数值,该值可被nrf_gpio函数使用。为了以后看的时候省一点时间,下面用图表说明一下,比如端口号port=0xb(二进制为1011),存储形式如下:




__STATIC_INLINE void nrf_gpio_cfg_output(uint32_t pin_number)
{nrf_gpio_cfg(pin_number,NRF_GPIO_PIN_DIR_OUTPUT,NRF_GPIO_PIN_INPUT_DISCONNECT,NRF_GPIO_PIN_NOPULL,NRF_GPIO_PIN_S0S1,NRF_GPIO_PIN_NOSENSE);
}
这个函数传入要设置的引脚编号,再通过nrf_gpio_cfg函数对该引脚进行设置。
__STATIC_INLINE:这是一个预处理宏,其作用是将函数定义为静态内联函数。静态函数意味着该函数的作用域仅限于当前文件,内联函数则是建议编译器在调用该函数的地方直接嵌入函数体代码,从而避免函数调用带来的开销。
nrf_gpio_cfg(
pin_number,
NRF_GPIO_PIN_DIR_OUTPUT,
NRF_GPIO_PIN_INPUT_DISCONNECT,
NRF_GPIO_PIN_NOPULL,
NRF_GPIO_PIN_S0S1,
NRF_GPIO_PIN_NOSENSE)
参数含义是:nrf_gpio_cfg(引脚,方向,输入模式,上下拉,驱动能力,电平检测功能),从6个参数对此引脚进行设置。
3.nrf_gpio_cfg函数是nrf_gpio.h中定义的一个函数,其代码如下 :
__STATIC_INLINE void nrf_gpio_cfg(//引脚,方向,输入模式,上下拉,驱动能力,电平检测功能uint32_t pin_number,nrf_gpio_pin_dir_t dir,nrf_gpio_pin_input_t input,nrf_gpio_pin_pull_t pull,nrf_gpio_pin_drive_t drive,nrf_gpio_pin_sense_t sense)
{NRF_GPIO_Type * reg = nrf_gpio_pin_port_decode(&pin_number);//得到pin_number所属的端口reg->PIN_CNF[pin_number] = ((uint32_t)dir << GPIO_PIN_CNF_DIR_Pos)//第0位开始,(0)| ((uint32_t)input << GPIO_PIN_CNF_INPUT_Pos)//第1位开始(1)| ((uint32_t)pull << GPIO_PIN_CNF_PULL_Pos)//第2位开始 (3..2)| ((uint32_t)drive << GPIO_PIN_CNF_DRIVE_Pos)//第8位开始(10..8)| ((uint32_t)sense << GPIO_PIN_CNF_SENSE_Pos);//第16位开始(17..16)
}
其主要功能是对指定 GPIO(通用输入输出)引脚的各项配置参数进行设置。通过这个函数,
可以灵活地配置 GPIO 引脚的方向、输入模式、上拉 / 下拉电阻、驱动能力以及电平检测功能等。
参数说明:
uint32_t pin_number:要配置的 GPIO 引脚编号,是一个无符号 32 位整数。
nrf_gpio_pin_dir_t dir:指定 GPIO 引脚的方向,例如输入或输出模式。nrf_gpio_pin_dir_t 是一个自定义的枚举类型,用于表示不同的引脚方向。(枚举值为NRF_GPIO_PIN_DIR_INPUT,NRF_GPIO_PIN_DIR_OUTPUT)
nrf_gpio_pin_input_t input:设置引脚的输入模式,比如是否断开输入等。nrf_gpio_pin_input_t 是一个自定义的枚举类型。(枚举值为NRF_GPIO_PIN_INPUT_CONNECT ,NRF_GPIO_PIN_INPUT_DISCONNECT )
nrf_gpio_pin_pull_t pull:配置引脚的上拉或下拉电阻,例如是否启用上拉、下拉或不使用上拉 / 下拉电阻。nrf_gpio_pin_pull_t 是一个自定义的枚举类型。(枚举值为NRF_GPIO_PIN_NOPULL,NRF_GPIO_PIN_PULLDOWN,NRF_GPIO_PIN_PULLUP)
nrf_gpio_pin_drive_t drive:设置引脚的驱动能力,例如强驱动、弱驱动等。nrf_gpio_pin_drive_t 是一个自定义的枚举类型。枚举值如下:
NRF_GPIO_PIN_S0S1 = GPIO_PIN_CNF_DRIVE_S0S1 ,
NRF_GPIO_PIN_H0S1 = GPIO_PIN_CNF_DRIVE_H0S1 ,
NRF_GPIO_PIN_S0H1 = GPIO_PIN_CNF_DRIVE_S0H1 ,
NRF_GPIO_PIN_H0H1 = GPIO_PIN_CNF_DRIVE_H0H1 ,
NRF_GPIO_PIN_D0S1 = GPIO_PIN_CNF_DRIVE_D0S1 ,
NRF_GPIO_PIN_D0H1 = GPIO_PIN_CNF_DRIVE_D0H1 ,
NRF_GPIO_PIN_S0D1 = GPIO_PIN_CNF_DRIVE_S0D1 ,
NRF_GPIO_PIN_H0D1 = GPIO_PIN_CNF_DRIVE_H0D1 ,
NRF_GPIO_PIN_E0E1 = GPIO_PIN_CNF_DRIVE_E0E1
nrf_gpio_pin_sense_t sense:配置引脚的电平检测功能,例如是否检测高电平、低电平或不进行检测。nrf_gpio_pin_sense_t 是一个自定义的枚举类型。
枚举值如下:
NRF_GPIO_PIN_NOSENSE = GPIO_PIN_CNF_SENSE_Disabled ,
NRF_GPIO_PIN_SENSE_LOW = GPIO_PIN_CNF_SENSE_Low ,
NRF_GPIO_PIN_SENSE_HIGH = GPIO_PIN_CNF_SENSE_High
nrf_gpio_pin_port_decode 是一个函数,其功能是对 pin_number 所属的端口进行解码,返回引脚对应的端口。
reg 是一个指向 NRF_GPIO_Type 类型结构体的指针,该结构体代表 GPIO 端口的寄存器映射。
reg->PIN_CNF[pin_number]:这是 GPIO 端口的引脚配置寄存器,用于对指定引脚的各项配置进行设置。
((uint32_t)dir << GPIO_PIN_CNF_DIR_Pos):把 dir 的值左移 GPIO_PIN_CNF_DIR_Pos 位,从而将其放置到寄存器里对应的位置。
|:按位或运算符,用于把各个配置项组合到一起。
同样的操作也会对 input、pull、drive 和 sense 进行,最终将它们组合后写入到 PIN_CNF 寄存器。此函数的作用是依据传入的参数对指定 GPIO 引脚的配置寄存器进行设置,
从而实现对引脚的方向、输入模式、上下拉电阻、驱动能力以及电平检测功能等的配置。
下面对nrf_gpio_pin_port_decode这个函数进行说明,它 是nrf_gpio.h中定义的一个函数,其代码如下:
__STATIC_INLINE NRF_GPIO_Type * nrf_gpio_pin_port_decode(uint32_t * p_pin)//decode:解码,uint32_t * p_pin是一个指向无符号 32 位整数的指针。该指针指向要解析的 GPIO 引脚编号。
{ //此函数用于解码 GPIO 引脚所属的端口,引脚编号个人理解:00000000 00000000 00000000 00000000~00000000 00000000 00000000 00011111(0-31)NRFX_ASSERT(nrf_gpio_pin_present_check(*p_pin));//断言
#if (GPIO_COUNT == 1)return NRF_P0;
#elseif (*p_pin < P0_PIN_NUM){return NRF_P0;}else{*p_pin = *p_pin & 0x1F;//0001 1111,比如:pin为34号引脚,已经超出P0拥有的引脚数0-31了,32,33,34,根当于P1口的0,1,2号引脚。return NRF_P1;}
#endif
}
其主要功能是根据传入的 GPIO 引脚编号,解析出该引脚所属的 GPIO 端口寄存器,并返回对应的寄存器指针。
NRFX_ASSERT:这是一个断言宏,用于在调试阶段进行错误检查。如果断言条件不满足,程序会触发断言失败,通常会终止程序运行并给出错误信息。
nrf_gpio_pin_present_check(*p_pin):调用 nrf_gpio_pin_present_check 函数,传入 *p_pin(即指针所指向的引脚编号)作为参数。该函数的作用是检查传入的引脚编号是否有效,如果无效则会触发断言失败。
#if (GPIO_COUNT == 1):这是一个条件编译指令,GPIO_COUNT 是一个宏定义,表示系统中 GPIO 端口的数量。如果 GPIO_COUNT 等于 1,说明系统中只有一个 GPIO 端口。
return NRF_P0;:如果只有一个 GPIO 端口,那么所有的引脚都属于该端口,直接返回 NRF_P0 指针,NRF_P0 通常是指向第一个 GPIO 端口寄存器的指针。
else:如果系统中有多个 GPIO 端口。
if (*p_pin < P0_PIN_NUM):检查传入的引脚编号是否小于 P0_PIN_NUM。P0_PIN_NUM 是一个宏定义,表示第一个 GPIO 端口(通常是 P0)的引脚数量。
return NRF_P0;:如果引脚编号小于 P0_PIN_NUM,说明该引脚属于第一个 GPIO 端口(P0),返回 NRF_P0 指针。
else:如果引脚编号大于等于 P0_PIN_NUM,说明该引脚属于第二个 GPIO 端口(通常是 P1)。
*p_pin = *p_pin & 0x1F;:将引脚编号与 0x1F(二进制 0001 1111)进行按位与操作。这一步的作用是将引脚编号映射到第二个 GPIO 端口的有效范围内,因为第二个 GPIO 端口的引脚编号通常是从 0 开始重新编号的。比如:pin为34号引脚,已经超出P0拥有的引脚数0-31了,32,33,34,相当于P1口的0,1,2号引脚。
return NRF_P1;:返回 NRF_P1 指针,NRF_P1 通常是指向第二个 GPIO 端口寄存器的指针。
总结
该函数通过检查传入的 GPIO 引脚编号,结合系统中 GPIO 端口的数量,判断该引脚所属的 GPIO 端口,并返回对应的寄存器指针。同时,在调试阶段会对引脚编号的有效性进行检查,确保程序的健壮性。
现在,再回到上一函数nrf_gpio_cfg,继续说明:
相关文章:
3、nFR52xx蓝牙学习(点亮第一个LED灯)
一、点灯代码: led.h文件 #ifndef __LED_H #define __LED_H#include "nrf52840.h"#define LED_0 NRF_GPIO_PIN_MAP(0,13) #define LED_1 NRF_GPIO_PIN_MAP(0,14) #define LED_2 NRF_GPIO_PIN_MAP(0,15) #define LED_3 …...
符号秩检验
内容来源 非参数统计(第2版) 清华大学出版社 王星 褚挺进 编著 符号秩检验 在符号检验的基础上,增加了数据绝对值大小的信息 检验统计量 用一个简单的例子来说明 样本数据 X i , i 1 , ⋯ , 6 X_i,i1,\cdots,6 Xi,i1,⋯,6 如下 X …...
制造业数字化转型:流程改造先行还是系统固化数据?基于以MTO和MTS的投资回报分析
1. 执行摘要 制造业正经历一场深刻的数字化转型,企业面临着先进行流程改造以优化运营,还是直接上线系统以固化数据的战略选择。本文深入分析了以销定产(MTO)和以产定销(MTS)两种主要生产模式下,…...
python相关笔记
一。 is和的区别 1.is看的是发票逻辑地址,用来判断两个变量是否引用同一个对象,is关注的是‘身份’ 2.判断两个对象是否具有相同的值,关注的是内容是否相等,也即值是否相等。 3. if x is None: print(x is None")...
C++(匿名函数+继承+多态)
#include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector> #include <memory>using namespace std;// 基类 Weapon class Weapon { protected:int atk; public:Weapon…...
界面架构 - MVVM (Qt)
MVVM MVVM 的主要特点示例示例功能示例代码ViewModel 类(C)主函数入口(main.cpp) QML 文件(main.qml)总结 MVVM(Model-View-ViewModel)架构是一种旨在进一步分离界面和业务逻辑的设计…...
在未归一化的线性回归模型中,特征的尺度差异可能导致模型对特征重要性的误判
通过数学公式来更清晰地说明归一化对模型的影响,以及它如何改变特征的重要性评估。 1. 未归一化的情况 假设我们有一个线性回归模型: y β 0 β 1 x 1 β 2 x 2 ϵ y \beta_0 \beta_1 x_1 \beta_2 x_2 \epsilon yβ0β1x1β2x2ϵ 其…...
【大模型系列篇】大模型基建工程:使用 FastAPI 构建 MCP 服务器
今天我们将使用FastAPI来构建 MCP 服务器,Anthropic 推出的这个MCP 协议,目的是让 AI 代理和你的应用程序之间的对话变得更顺畅、更清晰。FastAPI 基于 Starlette 和 Uvicorn,采用异步编程模型,可轻松处理高并发请求,尤…...
基于微信小程序的智慧乡村旅游服务平台【附源码】
基于微信小程序的智慧乡村旅游服务平台(源码L文说明文档) 目录 4系统设计 4.1系统功能设计 4.2系统结构 4.3.数据库设计 4.3.1数据库实体 4.3.2数据库设计表 5系统详细实现 5.1 管理员模块的实现 5.1.1旅游景点管理…...
llm-universe 踩坑记录
踩坑 云服务器2G不够,因为后面用到内存向量数据库,把数据加载到内存,一个大点的pdf就导致整个服务器崩了。当时可以选择不加载大的文件,自己替换一个小点的pdf 注意点 LLM API.ipynb 这节要注意看下API的含义,了解m…...
【案例】跨境电商企业实践云成本优化,选对平台是关键
某跨境电商企业近年因业务发展迅猛,近年来在全球市场大力拓展业务。然而,伴随其全球化布局的深化,云资源成本逐年攀升,每年在云资源方面的投入超 500万元。庞大的云资源使用量虽支撑了业务的快速发展,但也带来了较高的…...
系统思考与时间管理
时间管理的真正秘诀:主动浪费时间? 巴菲特的私人飞机驾驶员觉得自己不够成功,于是向巴菲特请教应该怎么做。巴菲特让他列出了自己人生中最想实现的25个目标,并按重要程度排序,接着安排时间专注做前五件最重要的事情。…...
洛谷.P1563 [NOIP 2016 提高组] 玩具谜题
P1563 [NOIP 2016 提高组] 玩具谜题 - 洛谷 代码区: #include<algorithm> #include<iostream> #include<cstring> #include<string> #include<vector>using namespace std; const int MAX 1000005; struct PEOPLE {int cx;//0朝内…...
华为面试,机器学习深度学习知识点:
机器学习深度学习知识点: 机器学习一般有哪些分数,对于不同的任务: 分类任务: 准确率(Accuracy):预测正确的样本数占总样本数的比例,公式为 Accuracy TPTNFPFN TPTN ,…...
关于 数据库 UNION 和 UNION ALL 的使用,以及 分库分表环境下多表数据组合后的排序和分页问题的解决方案 的详细说明,并以表格总结关键内容
以下是关于 数据库 UNION 和 UNION ALL 的使用,以及 分库分表环境下多表数据组合后的排序和分页问题的解决方案 的详细说明,并以表格总结关键内容: 1. UNION 和 UNION ALL 的核心区别 1.1 定义与语法 UNION 功能:合并两个或多个 …...
架构设计基础系列:事件溯源模式浅析
图片来源网络,侵权删 1. 引言 1.1 研究背景 传统CRUD模型的局限性:状态覆盖导致审计困难、无法追溯历史。分布式系统复杂性的提升:微服务架构下数据一致性、回滚与调试的需求激增。监管合规性要求:金融、医疗等领域对数…...
虚拟试衣间-云尚衣橱小程序-衣橱管理实现
衣橱管理实现 目标 (Goal): 用户 (User): 能通过 UniApp 小程序上传衣服图片。 后端 (Backend): 接收图片,存到云存储,并将图片信息(URL、用户ID等)存入数据库。 用户 (User): 能在小程序里看到自己上传的所有衣服图片列表。 技术栈细化 (Refined Tech Stack for this Pha…...
蓝桥杯省模赛 台阶方案
问题描述 小蓝要上一个楼梯,楼梯共有 n 级台阶(即小蓝总共要走 n 级)。小蓝每一步可以走 a 级、b 级或 c 级台阶。 请问小蓝总共有多少种方案能正好走到楼梯顶端? 输入格式 输入的第一行包含一个整数 n 。 第二行包含三个整数…...
Socket编程UDP
Socket编程UDP 1、V1版本——EchoServer2、网络命令2.1、ping2.2、netstat2.3、pidof 3、验证UDP——Windows作为client访问Linux4、V2版本——DictServer5、V3版本——简单聊天室 1、V1版本——EchoServer 首先给出EchoServer目录结构:服务器的类我们实现在UdpServ…...
无人机机体结构设计要点与难点!
一、无人机机体结构设计要点 1. 类型与应用场景匹配 固定翼无人机:需优化机翼升阻比,采用流线型机身降低气动阻力(如大展弦比机翼设计)。 多旋翼无人机:注重轻量化框架和对称布局(如四轴/六轴碳纤维机…...
音视频(一)ZLMediaKit搭建部署
前言 一个基于C11的高性能运营级流媒体服务框架 全协议支持H264/H265/AAC/G711/OPUS/MP3,部分支持VP8/VP9/AV1/JPEG/MP3/H266/ADPCM/SVAC/G722/G723/G729 1:环境 ubuntu22.* ZLMediaKit downlaod:https://github.com/ZLMediaKit/ZLMediaKit or https://g…...
实战 | 餐厅点餐小程序技术解析:SpringBoot + UniApp 高效开发指南
🖥️ 一、系统架构概览 1.1 技术选型 为了确保开发效率和系统稳定性,我们采用以下技术栈: 模块技术选型后台服务SpringBoot MyBatis-Plus MySQL用户端(点餐小程序)UniApp(Vue 语法)师傅端&…...
合并相同 patient_id 的 JSON 数据为数组
问题 select patient_id,concat({"itemText":",item_text,","itemValue":",item_value,"}) from hs_patient_groups where active 1;eef41128c47c401abb7f8885a5f9fbdf {"itemText":"旧","itemValue"…...
AI安全:构建负责任且可靠的系统
AI已成为日常生活中无处不在的助力,随着AI系统能力和普及性的扩展,安全因素变得愈发重要。从基础模型构建者到采用AI解决方案的企业,整个AI生命周期中的所有相关方都必须共同承担责任。 为什么AI安全至关重要? 对于企业而言&…...
STM32单片机入门学习——第8节: [3-4] 按键控制LED光敏传感器控制蜂鸣器
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.02 STM32开发板学习——第8节: [3-4] 按键控制LED&光敏传感器控制蜂鸣器 前言开…...
Linux驱动入门——设备树详解
文章目录 一、设备树的引入与作用二、设备树的语法1. Devicetree格式1.1 DTS文件的格式1.2 node的格式1.3 properties的格式 2. dts文件包含dtsi文件3. 常用的属性3.1 #address-cells、#size-cells3.2 compatible3.3 model3.4 status3.5 reg 4. 常用的节点(node)4.1 根节点4.2 …...
Scala集合
Scala集合分为序列Seq、集Set、映射Map,都扩展自Iterable特质,且有可变和不可变版本。不可变集合操作后会返回新对象,可变集合则直接修改原对象。比如数组,不可变数组定义后大小不可变,修改会生成新数组;可…...
阿里云AI Studio 2.0:拖拽搭建企业级智能客服系统
一、平台能力全景 1.1 核心功能矩阵 模块子功能技术指标对话设计可视化流程编排支持50节点类型NLP引擎意图识别准确率行业TOP3(92.6%)知识管理多源数据接入15格式支持渠道对接全渠道覆盖8大平台SDK 1.2 企业级特性 关键优势: 日均对话承…...
java虚拟机---JVM
JVM JVM,也就是 Java 虚拟机,它最主要的作用就是对编译后的 Java 字节码文件逐行解释,翻译成机器码指令,并交给对应的操作系统去执行。 JVM 的其他特性有: JVM 可以自动管理内存,通过垃圾回收器回收不再…...
您的LarkXR专属顾问上线了!平行云官网新增 AI 小助手,手册同步升级!
遇到LarkXR技术问题?还在手动翻文档? Paraverse平行云官网双升级——AI小助手实时答疑 用户手册智能检索! 助您快速定位解决方案,效率全面提升! < 01 > AI 小助手—— 您的 LarkXR 智能顾问 欢迎我们的新成员…...
推导Bias² + Variance + σ²_ε
问题的背景 我们有一个真实函数 f ( x ) f(x) f(x) 和基于训练数据 D D D 训练得到的模型 f ^ ( x ; D ) \hat{f}(x;D) f^(x;D)。对于任意输入 x x x: y y y 是真实的观测值,定义为 y f ( x ) ϵ y f(x) \epsilon yf(x)ϵ,其中 …...
javaSE知识梳理(一)
一.面向对象编程 1.面向对象的基本元素:类(class)和对象 ①类的声明 语法格式: [修饰符] class 类名{属性声明;方法声明; } ②对象的创建(new) 语法格式: //方式1:给创建有名对象 类名 对象名 new 类名();//方式2࿱…...
k8s statefulset pod重启顺序
在 Kubernetes 中,StatefulSet 的 Pod 重启顺序由以下规则和机制决定: 1. StatefulSet 的核心设计原则 StatefulSet 旨在管理有状态应用,其核心特性包括: 稳定的唯一标识:Pod 名称格式为 <statefulset-name>-&…...
记录学习的第十九天
现在这篇是记录一下4.1的学习。今天还没开始。 这篇是关于简单的动态规划的题目,思路比较清晰类似。 在这里先说一下有关动态规划的四个步骤: 1.确定子问题 2.确定dp数组的递推关系(dp数组也叫子问题数组) 3.确定求解的计算顺序 4.空间优化(初学者可…...
【实用技巧】电脑重装后的Office下载和设置
写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言下载设置总结互动致谢参考目录导航 前言 在数字化办公时代,Windows和…...
模拟集成电路设计与仿真 : Mismatch
前情提要 此為作者針對 mismatch ,進行資料統整,以便日後查詢原理 1. Mismatch (失配) random offset 靜態消除 : trimming動態消除 : auto zero ,choppingCMRRlinearity 理想差動對只有奇次諧波,沒有偶次諧波,但 mismatch 會引入殘存的偶次諧波PSRR2. Input Offset Volt…...
深度学习查漏补缺:4.数据分布的度量
一、数据分布差异的度量 1.KL散度(Kullback-Leibler Divergence) 什么是KL散度? KL散度是一种用来衡量两个概率分布之间差异的工具。你可以把它想象成一个“距离测量器”,但它不是传统意义上的距离(比如两点之…...
银河麒麟V10 aarch64架构安装mysql教程
国产操作系统 ky10.aarch64 因为是arm架构,故选择mysql8,推荐安装8.0.28版本 尝试8.0.30和8.0.41版本均未成功,原因不明☹️ 1. 准备工作 ⏬ 下载地址:https://downloads.mysql.com/archives/community/ 2. 清理历史环境 不用管…...
【NLP 52、多模态相关知识】
生活应该是美好而温柔的,你也是 —— 25.4.1 一、模态 modalities 常见: 文本、图像、音频、视频、表格数据等 罕见: 3D模型、图数据、气味、神经信号等 二、多模态 1、Input and output are of different modalities (eg: tex…...
[NCTF2019]Fake XML cookbook [XXE注入]
题目源代码 function doLogin(){var username $("#username").val();var password $("#password").val();if(username "" || password ""){alert("Please enter the username and password!");return;}var data "…...
I²C总线高级特性与故障处理分析
IC总线高级特性与故障处理深度分析 目录 1. IC基础回顾 1.1 IC通信基本原理1.2 IC总线时序与协议1.3 寻址方式与读写操作 2. IC高级特性 2.1 多主机模式2.2 时钟同步与伸展2.3 高速模式与Fast-mode Plus2.4 10位寻址扩展 3. IC总线故障与锁死 3.1 断电锁死原理3.2 总线挂起与…...
【力扣hot100题】(039)二叉树的直径
这题在简单题中有点难度,主要是不要把边数和深度搞混(我就这样)。 我想了很久,发现如果当前节点没有右节点,就将它的右长度设为0,左节点同理,并且在递归是不会加一,而是将加一的操作…...
L2-001 紧急救援
注意题目没有说边的数量,实际最多有5e5条边,开小了第四个样例会错!!! - 思路: Dijkstra 求最短路并且维护路径条数和最大人数。 #include<bits/stdc.h> using namespace std;typedef pair<int, int> pii…...
分组背包问题
与01背包的区别是,多了一个限制条件,将物品打包,每组物品只能用一个 #include <iostream> #include <algorithm>using namespace std;const int N 110;int v[N][N], w[N][N], s[N]; int f[N]; int n, m;int main() {cin >>…...
【工业场景】用YOLOv12实现饮料类别识别
饮料类别识别任务的意义在于帮助人们更快速地识别和区分不同类型的饮料,从而提高消费者的购物体验和满意度。对于商家而言,饮料类别识别可以帮助他们更好地管理库存、优化货架布局和预测销售趋势,从而提高运营效率和利润。此外,饮…...
宽带空时波束形成算法原理及MATLAB仿真
宽带阵列信号处理 空时波束形成、空时波束形成方向图 卫星导航空时抗干扰算法 MATLAB仿真 文章目录 前言一、空时波束形成结构二、空时波束形成方向图三、MATLAB仿真四、MATLAB源代码总结 前言 \;\;\;\;\; 空时波束形成(Space-Time Beamforming)是一种结…...
406. 根据身高重建队列
链接 406. 根据身高重建队列 - 力扣(LeetCode) 题目 思路 可能的一个思路是先对高的人进行处理,这样后面插入矮的人时不会影响高的人的位置。比如,如果先处理高个子,那么当插入一个矮个子的时候,前面的高…...
机器学习:人工智能的核心驱动力
近年来,机器学习(Machine Learning,简称ML)已成为人工智能(AI)领域的核心驱动力。它不仅广泛应用于图像识别、自然语言处理、医疗诊断等领域,还推动了自动驾驶、智能推荐系统等前沿技术的发展。…...
机器视觉中的传统视觉与深度视觉
工业视觉是现代制造业中一个非常重要的应用领域,广泛用于产品质量检测,尤其是在生产线上。几乎所有的工业产品在流入市场之前,都要经历严格的缺陷检测环节,以确保它们符合质量标准。而在这一过程中,工业视觉检测系统发…...
机器学习开发全流程详解:从数据到部署的完整指南
机器学习项目的成功不仅依赖算法选择,更在于系统化的开发流程。本文详细拆解各阶段的核心任务、工具及注意事项,并通过表格总结帮助开发者快速掌握关键要点。 1. 数据获取与准备 数据是机器学习的基础,需确保数据的质量与代表性。 关键任务…...