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

STM32核心机制解析:重映射、时间片与系统定时器实战——从理论到呼吸灯开发

知识点1【重映射的概念】

1、引入

默认:

**定义:**系统或硬件在未经用户修改时的预设配置或行为

STM32的引脚功能、外设配置、中断向量表等默认由芯片设计或库函数预设。

部分重映射

**定义:**仅修改部分资源或地址的映射关系,其余保留默认配置

通过AFIO(Alternate Function I/O)或外设寄存器,仅修改部分外设的引脚映射,其他功能保持默认。

完全重映射

**定义:**彻底替换原有映射关系,重新分配所有资源或地址的映射规则。

彻底改变外设或系统资源的全局映射关系,通常需要重新配置硬件或系统级寄存器

注意:影响全局功能,谨慎操作。

2、定时器的映射关系图

知识点2【GPIO和AFIO】

1、GPIO

主要用于最基础的数字信号输入/输出

输入模式:浮空,上拉,下拉,模拟

输出模式:推挽,开漏或复用功能

2、AFIO

专门管理”外设功能“如何映射到特定引脚。

比如USART1,SPI1,I2C1,定时器PWM,外部中断线(EXTI)等外设,都有多个候选引脚,AFIO通过重映射(Remap)寄存器决定最终用哪个引脚。

知识点3【复用推挽/开漏 与 推挽/开漏】

注意:

用到重映射想到 对应端口需要 复用

用到外设要想到 对应端口需要 复用

用到外部中断想到 对应端口需要 复用

知识点4【时间片】

**时间片(Time Slice)**是操作系统中 CPU时间分配的最小单元

**核心思想:**将CPU的执行时间划分称多个固定长度的时间片段,每个任务(或线程/进程)在一个时间片内独占CPU,时间片用完后强制切换其他任务。

调度流程:

  • 步骤 1:任务 A 获得 CPU 使用权,开始执行。
  • 步骤 2:系统时钟中断触发,检查已用时间片。
  • 步骤 3:若时间片耗尽,将任务 A 挂起,切换到任务 B。
  • 步骤 4:任务 A 重新等待调度,进入就绪队列。

时间片主要是为了实现非阻塞

知识点5【系统定时器】

系统定时器又称 嘀嗒定时器,属于内核部分。

系统定时器中采用向下计数没有预分频器,有计数器,与 重装载计数器

计数器:计数范围0-FFFFFF,24位

重装载计数器:计数范围0-FFFFFF,24位

系统定时器一般用于实现延时,下面我写一段延时代码,主要看逻辑,函数无需刻意记忆,用多了自然会记住,记不住可以看手册。

函数介绍 SysTick_Config

static __INLINE uint32_t SysTick_Config(uint32_t ticks)

函数功能:

是ARM Cortex-M内核中SysTick定时器的初始化函数,用来配置SysTick定时器的 中断周期

主要是设置SysTick定时器的重装载值(Reload Value),并启动定时器和中断、

参数:

ticks:SysTick定时器的重装载值,决定中断触发周期

返回值:

0:配置成功

-1:配置失败(ticks超出SysTick寄存器的最大范围)

触发中断对应的中断服务函数

void SysTick_Handler(void)

代码演示

#include "stm32f10x.h" 
#include "stm32f10x_conf.h"void Systick_Init(u32 ticks);
void Delay_ms(u32 ms);
void SysTick_Handler(void);
void LED_Init(void);
void LED0_Blink(u32 ms);
void LED1_Blink(u32 ms);u32 delay_ms = 0;//这里我们实现一个两个灯独立闪烁,互不影响
//LED0:闪烁周期0.4s  PB5
//LED1:闪烁周期0.6s  PE5u32 LED0[2] = {0,0};
u32 LED1[2] = {0,0};int main(void)
{//打开系统定时器Systick_Init(72000);//每隔1ms delay_ms + 1LED_Init();while(1){LED0_Blink(400);LED1_Blink(600);}}//系统定时器初始化函数
void Systick_Init(u32 ticks)
{SysTick_Config(ticks);
}void LED_Init(void)
{
//	GPIO_InitTypeDef GPIOB_InitStruct;GPIO_InitTypeDef GPIOE_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//	GPIOB_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
//	GPIOB_InitStruct.GPIO_Pin = GPIO_Pin_5;
//	GPIOB_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIOE_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIOE_InitStruct.GPIO_Pin = GPIO_Pin_5;GPIOE_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIOE_InitStruct);GPIO_Init(GPIOE,&GPIOE_InitStruct);GPIO_SetBits(GPIOB,GPIO_Pin_5);GPIO_SetBits(GPIOE,GPIO_Pin_5);
}//延时函数
void Delay_ms(u32 ms)
{u32 ticks = delay_ms + ms;while(ticks > delay_ms);
}void LED0_Blink(u32 ms)
{LED0[1] = ms;if(LED0[0] >= LED0[1]){GPIO_WriteBit(GPIOB,GPIO_Pin_5,(BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_5)));LED0[0] = 0;}
}
void LED1_Blink(u32 ms)
{LED1[1] = ms;if(LED1[0] >= LED1[1]){GPIO_WriteBit(GPIOE,GPIO_Pin_5,(BitAction)(1 - GPIO_ReadOutputDataBit(GPIOE,GPIO_Pin_5)));LED1[0] = 0;}
}//系统定时器中断服务函数
void SysTick_Handler(void)
{delay_ms++;LED1[0]++;LED0[0]++;
}

代码遇到的问题

SysTick_Handler重定义

解决方法

屏蔽掉即可

知识点6【定时器常用标准库函数】

详细函数使用看手册

注意事项:

TIM_GetITStatus与TIM_ClearITPendingBit配套使用

TIM_GetFlagStatus 与TIM_ClearFlag 配套使用

代码演示

这里我们使用标准库 实现了使用 OC(输出比较)的中断,来控制CCR寄存器中的值,进而 实现呼吸灯

#include "stm32f10x.h" 
#include <stm32f10x_tim.h>
#include <stm32f10x_conf.h>
#include "delay.h"
//定时器的OC(PA1  定时器2通道2)中断实现LED(PB5)呼吸灯
void LED_Init(void);
void TIM3_CH2_Init(void);int dirction = 1;
int num_ccr = 0;int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//开启AFIO  重映射之前需要开启RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//重映射GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);LED_Init();TIM3_CH2_Init();while(1){}
}
//LED初始化 PB5
void LED_Init(void)
{GPIO_InitTypeDef GPIOB_InitStruct;//时钟配置RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//管脚输出模式配置GPIO_DeInit(GPIOB);GPIOB_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;GPIOB_InitStruct.GPIO_Pin = GPIO_Pin_5;GPIOB_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIOB_InitStruct);//熄灭GPIO_SetBits(GPIOB,GPIO_Pin_5);
}//TIM3初始化 通道2 PA2
void TIM3_CH2_Init(void)
{TIM_TimeBaseInitTypeDef TIM3_TimeBaseInitStruct;TIM_OCInitTypeDef TIM3_OC2InitStruct;NVIC_InitTypeDef NVIC_InitStruct_TIM3_CH2;//时钟配置RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//定时器 时基单元 配置TIM_TimeBaseStructInit(&TIM3_TimeBaseInitStruct);TIM3_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;TIM3_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;TIM3_TimeBaseInitStruct.TIM_Period = 1000 - 1;TIM3_TimeBaseInitStruct.TIM_Prescaler = 72 - 1;TIM_TimeBaseInit(TIM3,&TIM3_TimeBaseInitStruct);//OC配置TIM_OCStructInit(&TIM3_OC2InitStruct);TIM3_OC2InitStruct.TIM_OCMode = TIM_OCMode_PWM1;TIM3_OC2InitStruct.TIM_Pulse = 0;	TIM3_OC2InitStruct.TIM_OCPolarity = TIM_OCPolarity_Low;TIM3_OC2InitStruct.TIM_OutputState = TIM_OutputState_Enable;TIM_OC2Init(TIM3,&TIM3_OC2InitStruct);//输出比较使能//TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);//中断使能TIM_ITConfig(TIM3,TIM_IT_CC2,ENABLE);//NVIC配置NVIC_InitStruct_TIM3_CH2.NVIC_IRQChannel = TIM3_IRQn;NVIC_InitStruct_TIM3_CH2.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStruct_TIM3_CH2.NVIC_IRQChannelPreemptionPriority = 0x01;NVIC_InitStruct_TIM3_CH2.NVIC_IRQChannelSubPriority = 0x01;NVIC_Init(&NVIC_InitStruct_TIM3_CH2);//启动定时器TIM_Cmd(TIM3,ENABLE);
}//中断服务函数
void TIM3_IRQHandler(void)
{if(TIM_GetITStatus(TIM3,TIM_IT_CC2) == SET){//条件判断 //CCR == 1000-》DIR = -1;//CCR == 0-》DIR = 1;if(num_ccr <= 0){num_ccr = 0;dirction = 1;}else if(num_ccr >= 1000 - 1){num_ccr = 1000 - 1;dirction = -1;}num_ccr += dirction;TIM_SetCompare2(TIM3,num_ccr);//清除中断标志位TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);}
}

代码犯错:

1、输出比较寄存器需要使能,在对应的结构体内使能

TIM3_OC2InitStruct.TIM_OutputState = TIM_OutputState_Enable;

2、使用了 重映射PB5,输出模式要用AF_PP(复用推挽输出)

结束

代码重在练习!

代码重在练习!

代码重在练习!

今天的分享就到此结束了,希望对你有所帮助。如果你喜欢我的分享,请点赞收藏加关注,谢谢大家!!!

相关文章:

STM32核心机制解析:重映射、时间片与系统定时器实战——从理论到呼吸灯开发

知识点1【重映射的概念】 1、引入 默认&#xff1a; **定义&#xff1a;**系统或硬件在未经用户修改时的预设配置或行为 STM32的引脚功能、外设配置、中断向量表等默认由芯片设计或库函数预设。 部分重映射 **定义&#xff1a;**仅修改部分资源或地址的映射关系&#xff…...

【Linux网络编程】HTTPS协议原理

目录 一&#xff0c;HTTPS是什么&#xff1f; 1&#xff0c;什么是加密&#xff1f; 2&#xff0c;为什么需要加密&#xff1f; 3&#xff0c;常见的加密方式 对称加密 非对称加密 4&#xff0c;数据摘要&&数据指纹 二&#xff0c;HTTPS协议加密方案 方案一&a…...

【idea】快捷键ctrl+shift+F(Find in files)不起作用

问题描述 在idea中使用快捷键CtrlShiftF&#xff0c;进行内容的搜索&#xff0c;但是弹不出对话框、或有时候能弹出有时候又弹不出。 原因分析 1.怀疑是缓存问题&#xff1f;--清空缓存重启也没什么作用 2.怀疑是idea的问题&#xff1f;--有时行、有时不行&#xff0c;而且…...

「光域」系列激光测距传感器:以光为尺,重构空间认知边界

在150米深的地下矿井中&#xff0c;无人矿卡需要精准识别前方3厘米的落石&#xff1b;在千米高空的风电塔筒检测现场&#xff0c;工程师手持设备要穿透50米雾霭锁定0.1毫米的形变&#xff1b;在智能仓储的立体库房里&#xff0c;穿梭车需在0.3秒内完成货架间距的毫米级校准………...

http和https的区别

HTTP&#xff08;超文本传输协议&#xff09;和HTTPS&#xff08;超文本传输安全协议&#xff09;是互联网上用于传输数据的两种协议&#xff0c;它们的主要区别如下&#xff1a; 1. 安全性 HTTP&#xff1a;明文传输&#xff0c;数据在传输过程中不加密&#xff0c;容易被窃…...

Dapp开发-如何开发一个dapp

DApp开发全流程指南&#xff1a;从需求到落地的技术实践与生态构建 ——2025年去中心化应用开发方法论与未来趋势解析 一、需求定位与架构设计&#xff1a;构建DApp的技术地基 需求精准定位 功能定义&#xff1a;明确DApp的核心场景&#xff08;如DeFi借贷、NFT交易、DAO治理&…...

Python邮件处理(使用imaplib和email库实现自动化邮件处理)

在日常工作中&#xff0c;我们经常需要自动化处理电子邮件&#xff0c;比如自动下载附件、解析邮件内容、处理特定格式的数据等。本文将通过一个实际案例&#xff0c;详细介绍如何使用Python的imaplib和email库来实现邮件的自动化处理。 目录 环境准备与库介绍IMAP邮件服务器连…...

时空注意力机制深度解析:理论、技术与应用全景

时空注意力机制作为深度学习领域的关键技术&#xff0c;通过捕捉数据在时间和空间维度上的依赖关系&#xff0c;显著提升了时序数据处理和时空建模能力。本文从理论起源、数学建模、网络架构、工程实现到行业应用&#xff0c;系统拆解时空注意力机制的核心原理&#xff0c;涵盖…...

鸿蒙 UIAbility组件与UI的数据同步和窗口关闭

使用 EventHub 进行数据通信 根据 Stage 模型概念图 UIAbility 先于 ArkUI Page 创建 所以&#xff0c;事件要先 .on 订阅 再 emit 发布 假如现在有页面 Page1 和他的 UIAbility // src/main/ets/page1ability/Page1Ability.ets onCreate(want: Want, launchParam: Ability…...

UI-TARS: 基于视觉语言模型的多模式代理

GitHub&#xff1a;https://github.com/bytedance/UI-TARS 更多AI开源软件&#xff1a;发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI 基于视觉语言模型&#xff08;Vision-Language Model&#xff09;的 GUI 代理应用&#xff0c;允许用户通过自然语言控制电脑操…...

C++多态讲解

1. 多态的概念 通俗来说&#xff0c;就是多种形态。多态分为编译时多态(静态多态)和运行时多态(动态多态)。编译时多态就是函数重载和函数模板&#xff0c;他们传不同的类型的参数就可以调用不同的函数&#xff0c;通过参数的不同达到多种形态&#xff0c;之所以叫编译时多态&…...

QuecPython+蜂窝模组基础开发

开发准备 硬件&#xff1a; 一块 QuecPython_EC2X_EVB 开发板 (以该开发板为例&#xff0c;更多开发板介绍参见下文开发板列表)USB 数据线 (USB-A TO USB-C)PC (Windows10) 蜂窝模组开发板列表: EC2X_EVBEC600X_EVBEC800X_EVBEC600X/EC800X_CORE_EVBBG95_EVBEC200X_EVBEG91…...

-MAC桢-

MAC桢和IP的关系&#xff1a; 主机A想跨网络和B通信需要IP地址进行路由选择&#xff0c;但一个局域网&#xff0c;比如路由器进行路由选择之前&#xff0c;首先要将数据包发送给路由器B&#xff0c;也就是局域网通信也就是同一个网段的主机进行通信&#xff0c;所以必须通过mac…...

反转链表 - 简单

************* C topic: 206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; ************* Give the topic an inspection. It seems really easy. At very first, I think that I will use reverse cammand to kill this topic. But a few seconds later I found that…...

负载均衡 ELB 在 zkmall开源商城高流量场景下的算法优化

在电商大促、直播带货等高频交易场景下&#xff0c;流量突发增长对系统稳定性提出严峻挑战。ZKmll 开源商城通过对负载均衡 ELB&#xff08;Elastic Load Balancer&#xff09;算法的深度优化&#xff0c;结合业务场景特性设计动态加权轮询 地域感知 热点分流的混合策略&…...

YOLOv5推理代码解析

代码如下 import cv2 import numpy as np import onnxruntime as ort import time import random# 画一个检测框 def plot_one_box(x, img, colorNone, labelNone, line_thicknessNone):"""description: 在图像上绘制一个矩形框。param:x: 框的坐标 [x1, y1, x…...

创建三个网络,分别使用RIP、OSPF、静态,并每个网络10个电脑。使用DHCP分配IP

DHCP 自动分配IP&#xff0c;集中管理&#xff0c;提高效率 在路由器中设置 Router>en Router#conf t Router(config)#ip dhcp pool ip30 //创建DHCP地址池 Router(dhcp-config)#network 192.168.30.0 255.255.255.0 // 配置网络地址和子网掩码 Router(dhcp-config)#defa…...

[网络层]网络层设备路由器

路由表 路由器能进行路由转发&#xff0c;所依靠的核心数据结构就是路由表&#xff0c;那么路由表是怎么来的&#xff0c; 静态路由和动态路由&#xff1a; 说的是表项&#xff0c;这个表项是静态的还是动态的&#xff0c;就跟ARP缓存表的表项静态动态是一回事&#xff0c; …...

Maven 项目中将本地依赖库打包到最终的 JAR 中

文章目录 前言详细步骤 前言 在现代后端开发中&#xff0c;构建高效且可扩展的 Web 应用程序通常依赖于多种第三方库和内部依赖。这些依赖可以来自公共仓库&#xff0c;也可能是公司内部自研的库或尚未发布到公共仓库的 JAR 包。本文将详细介绍如何在 Maven 项目中处理本地依赖…...

大模型的Lora如何训练?

大模型LoRA(Low-Rank Adaptation)训练是一种参数高效的微调方法,通过冻结预训练模型权重并引入低秩矩阵实现轻量化调整。以下是涵盖原理、数据准备、工具、参数设置及优化的全流程指南: 一、LoRA的核心原理 低秩矩阵分解 在原始权重矩阵$ W 旁添加两个低秩矩阵 旁添加两个…...

CSS3 伪类和使用场景

CSS3 伪类&#xff08;Pseudo-classes&#xff09;大全 CSS3 引入了许多新的伪类&#xff0c;以下是完整的 CSS3 伪类分类列表&#xff08;包括 CSS2 的伪类&#xff09;&#xff1a; 一、结构性伪类&#xff08;Structural Pseudo-classes&#xff09; 这些伪类根据元素在文…...

GitDiagram - GitHub 仓库可视化工具

GitDiagram - GitHub 仓库可视化工具 项目链接&#xff1a;https://github.com/ahmedkhaleel2004/gitdiagram 将任何 GitHub 仓库转换为交互式架构图&#xff0c;只需替换 URL 中的 hub 为 diagram。 ✨ 核心功能 即时可视化&#xff1a;将代码库结构转换为系统设计/架构图…...

[特殊字符] 本地大模型编程实战(29):用大语言模型LLM查询图数据库NEO4J(2)

本文将基于langgraph框架&#xff0c;用LLM查询NEO4J图数据库&#xff0c;构建可定制、能应对复杂场景的工作流&#xff01; &#x1f31f; 核心亮点 是否用户提问是否电影相关?生成Cypher查询直接回答执行查询生成最终答案 &#x1f9e9; 模块化实现 1️⃣ 定义状态机 from …...

Python中操作Neo4j图数据库

在当今数据驱动的时代&#xff0c;关系型数据库在处理高度关联的数据时常常显得力不从心。图数据库&#xff0c;尤其是Neo4j&#xff0c;以其独特的图结构和高效的关系查询能力&#xff0c;成为了解决这一问题的利器。结合Python的简洁与强大&#xff0c;我们可以更高效地构建和…...

人工智能时代:解锁职业新身份,从“认证师”到“工程师”的进阶之路

在人工智能技术浪潮席卷全球的今天,技术的飞速迭代正在重塑职业版图。从算法优化到伦理决策,从系统测试到应用开发,AI技术不再只是程序员的专属领域,而是成为各行各业从业者必须掌握的“生存技能”。当企业争相布局AI赛道,个人如何在这场变革中抢占先机?答案或许藏在两个…...

浙江大学 deepseek 公开课 第三季 第3期 - 陈喜群 教授 (附PPT下载) by 突破信息差

浙江大学DeepSeek系列公开课第三季重磅开启&#xff0c;特邀该校多领域权威学者联袂主讲。课程聚焦AI技术如何重构基础学科研究范式&#xff0c;深度解码以DeepSeek为代表的智能模型在交叉学科中的创新应用。在"XAI"融合浪潮下&#xff0c;学术大咖将剖析传统学科与人…...

企业级商城系统容器化部署技术方案

容器化部署已成为企业级商城系统构建高可用、弹性架构的核心技术。结合行业实践与技术趋势&#xff0c;以下从架构设计、工具链选型、关键挑战及解决方案等维度&#xff0c;提供一套完整的实施技术方案&#xff1a; 一、架构设计与技术选型 微服务架构拆分 服务拆分原则&#x…...

Java设计模式之适配器模式:从入门到精通

适配器模式(Adapter Pattern)是Java中最常用的结构型设计模式之一,它像一座桥梁连接两个不兼容的接口,使得原本由于接口不兼容而不能一起工作的类可以协同工作。本文将全面深入地解析适配器模式,从基础概念到高级应用,包含丰富的代码示例、详细注释、使用场景分析以及多维对…...

Spark,RDD中的转换算子

RDD中的转换算子 map算子 对数字1-10进行乘除&#xff0c;*2 filter算子 对数字1-10进行过滤&#xff0c;过滤出偶数 filatMap算子 对单词进行拆分 reduceByKey算子 对具有相同键的所有值进行聚合操作 统计词频词频统计简洁写法 ———————————————— 版权声明…...

牛客周赛 Round 92(再现京津冀蓝桥杯???)

1. 小红的签到题 现在小红希望你写出一个长度为 nnn 的、使用了下划线命名法命名的变量。为了显出特征&#xff0c;请保证该变量至少由两个单词组成。 输入描述: 输入一个正整数 n(3≦n≦100)&#xff0c;代表需要构造的变量长度。 输出描述: 输出一个长度为 n 的字符串&#x…...

React 18 的新功能:构建高性能应用的革新之道

React 18 的发布标志着前端开发进入了一个全新的并发时代。作为 React 历史上最重要的版本之一&#xff0c;它不仅带来了底层架构的深度重构&#xff0c;更通过一系列创新功能重新定义了现代 Web 应用的开发范式。这些特性在保持向后兼容的同时&#xff0c;为开发者提供了前所未…...

Python-Flask-Dive

Python-Flask-Dive 适用Python编写一个Flask的快速上手模板&#xff0c;后续如果需要使用Python快速进行we端的验证可以直接下载使用 1-项目创建 本项目仓库代码地址&#xff1a;https://gitee.com/enzoism/python_flask_dive 1-Python环境 ## 1-空工程初始化环境 mkdir my_pr…...

热门CPS联盟小程序聚合平台与CPA推广系统开发搭建:助力流量变现与用户增长

一、行业趋势&#xff1a;CPS与CPA模式成流量变现核心 在移动互联网流量红利见顶的背景下&#xff0c;CPS&#xff08;按销售付费&#xff09;和CPA&#xff08;按行为付费&#xff09;模式因其精准的投放效果和可控的成本&#xff0c;成为企业拉新与用户增长的核心工具。 CPS…...

16.three官方示例+编辑器+AI快速学习webgl_buffergeometry_lines_indexed

本实例主要讲解内容 这个Three.js示例展示了如何使用**索引几何体(Indexed Geometry)**创建复杂的分形线条图案。通过递归算法生成科赫雪花(Koch Snowflake)曲线&#xff0c;并利用索引缓冲区优化顶点数据存储&#xff0c;实现高效的线条渲染。 核心技术包括&#xff1a; 索…...

PowerBI基础

一、前言 在当今数据驱动的时代&#xff0c;如何高效地整理、分析并呈现数据&#xff0c;已成为企业和个人提升决策质量的关键能力。Power BI 作为微软推出的强大商业智能工具&#xff0c;正帮助全球用户将海量数据转化为直观、动态的可视化洞察。数据的世界充满可能性&#xf…...

【MCP】魔搭社区MCP服务(高德地图、everything文件搜索)

【MCP】魔搭社区MCP服务&#xff08;高德地图、everything文件搜索&#xff09; 1、上手使用2、环境配置&#xff08;1&#xff09;cherry-studio配置&#xff08;2&#xff09;添加魔搭大模型服务&#xff08;如果已经设置了其他大模型服务&#xff0c;可跳过&#xff09;&…...

适合大数据和宽表的数据存储和分析场景的数据库

适合大数据和**宽表(wide table)**的数据存储和分析场景的数据库,通常需要具备以下几个特性: 支持高吞吐量的写入和读取;能处理百万级列或数百列的宽表结构;良好的压缩和分区能力;支持分布式扩展和容错;一定程度的 SQL 支持或灵活的查询引擎。✅ 推荐数据库类型及代表产…...

ORB特征点检测算法

角点是图像中灰度变化在两个方向上都比较剧烈的点。与边缘&#xff08;只有一个方向变化剧烈&#xff09;或平坦区域&#xff08;灰度变化很小&#xff09;不同&#xff0c;角点具有方向性和稳定性。 tips:像素梯度计算 ORB算法流程简述 1.关键点检测&#xff08;使用FAST…...

Node和npm初学

了解Node和npm 目录 ​1. 什么是 npm?​ 2. npm有哪些使用场景?​ 3. npm有什么核心特性?​ 4.npm的常用命令有那些? 5. 关键配置文件是什么?​ ​6. 安全与最佳实践​ 7.什么是 Node.js?​ 8.Node.js有什么优势? 9.如何安装和下载? 10.如何验证安装成功?…...

【android bluetooth 案例分析 03】【PTS 测试 】【PBAP/PCE/SGSIT/SERR/BV-01-C】

1. PBAP/PCE/SGSIT/OFFS/BV-01-C 1. 测试项说明&#xff1a; Please initiate a GATT connection over BR/EDR to the PTS.Description: Verify that the Implementation Under Test (IUT) can initiate GATT connect request over BR/EDR to PTS.测试项名称&#xff1a; Ple…...

VIC-2D 7.0 为平面样件机械试验提供全视野位移及应变数据软件

The VIC-2D系统是一个完全集成的解决方案&#xff0c;它基于优化的相关算法为平面试样的力学测试提供非接触、全场的二维位移和应变数据&#xff0c;可测量关注区域内的每个像素子集的面内位移&#xff0c;并通过多种张量选项计算全场应变。The VIC-2D 系统可测量超过 2000%变形…...

深入理解Embedding Models(嵌入模型):从原理到实战(下)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《深度探秘&#xff1a;AI界的007》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是 Embedding 2、什么是嵌入模型 二、构建嵌入…...

labview硬件采集

(1)硬件的描述 &#xff08;2&#xff09;实验步骤1&#xff1a; &#xff08;3&#xff09;实验步骤2 库名/路径的选择要使用32位的开发资料 &#xff08;4&#xff09;实验步骤3 &#xff08;5&#xff09;实验步骤4 找到DoSetV12() 设置返回类型 设置chan 设置state labv…...

自动驾驶技术栈——DoIP通信协议

一、DoIP协议简介 DoIP&#xff0c;英文全称是Diagnostic communication over Internet Protocol&#xff0c;是一种基于因特网的诊断通信协议。 DoIP协议基于TCP/IP等网络协议实现了车辆电子控制单元(ECU)与诊断应用程序之间的通信&#xff0c;常用于汽车行业的远程诊断、远…...

uniapp引入七鱼客服微信小程序SDK

小程序引入七鱼sdk 1.微信公众平台引入2.代码引入3.在pagesQiyu.vue初始化企业appKey4.跳转打开七鱼客服 1.微信公众平台引入 账号设置->第三方设置->添加插件->搜索 QIYUSDK ->添加 2.代码引入 在分包中引入插件 "subPackages": [{"root":…...

【SSM-SpringMVC(二)】Spring接入Web环境!本篇开始研究SpringMVC的使用!SpringMVC数据响应和获取请求数据

SpringMVC的数据响应方式 页面跳转 直接返回字符串通过ModelAndView对象返回 回写数据 直接返回字符串返回对象或集合 页面跳转&#xff1a; 返回字符串方式 直接返回字符串&#xff1a;此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转 RequestMapping("/con&…...

【AXI总线专题】AXI-FULL-Master

【AXI总线专题】AXI-FULL-Master 1.axi-full概述2.信号定义3.测试4.仿真波形5.附录clogb2函数axi4中的一些参数解释wishbone总线 6.工程文件 概述 参考文档&#xff1a; 《3-2-03米联客2022版AXI4总线专题-20211123.pdf》 《IHI0022E_amba_axi_and_ace_protocol_spec.pdf》 1.a…...

风车OVF镜像:解放AI开发限制的Ubuntu精简系统

风车OVF镜像&#xff1a;解放AI开发限制的Ubuntu精简系统 AI白嫖续杯一站式-风车ovf AI白嫖续杯一站式解决-风车ovf 前言 作为一名AI开发者&#xff0c;我经常在Windows和Linux环境之间切换开发。然而&#xff0c;Windows平台上的各种免费版限制逐渐成为我工作效率的瓶颈。在寻…...

降低60.6%碰撞率!复旦大学地平线CorDriver:首次引入「走廊」增强端到端自动驾驶安全性

导读 复旦大学&地平线新作-CorDriver: 首次通过引入"走廊"作为中间表征&#xff0c;揭开一个新的范式。预测的走廊作为约束条件整合到轨迹优化过程中。通过扩展优化的可微分性&#xff0c;使优化后的轨迹能无缝地在端到端学习框架中训练&#xff0c;从而提高安全…...

查看购物车

一.查看购物车 查看购物车使用get请求。我们要查看当前用户的购物车&#xff0c;就要获取当前用户的userId字段进行条件查询。因为在用户登录时就已经将userId封装在token中了&#xff0c;因此我们只需要解析token获取userId即可&#xff0c;不需要前端再传入参数了。 Control…...