stm32——hal库学习笔记(定时器)

这里写目录标题

  • 一、定时器概述(了解)
    • 1.1,软件定时原理
    • 1.2,定时器定时原理
    • 1.3,STM32定时器分类
    • 1.4,STM32定时器特性表
    • 1.5,STM32基本、通用、高级定时器的功能整体区别
  • 二、基本定时器(掌握)
    • 2.1,基本定时器简介(了解)
    • 2.2,基本定时器框图(熟悉)
    • 2.3,定时器计数模式及溢出条件(熟悉)
    • 2.4,定时器中断实验相关寄存器(了解)
    • 2.5,定时器溢出时间计算方法(掌握)
    • 2.6,定时器中断实验配置步骤(掌握)
    • 2.7,编程实战:定时器中断实验(掌握)![在这里插入图
  • 三、通用定时器(掌握)
    • 3.1,通用定时器简介(了解)
    • 3.2,通用定时器框图(熟悉)
    • 3.3,计数器时钟源(掌握)
    • 3.4,通用定时器PWM输出实验(掌握)
      • 3.4.1,通用定时器输出比较部分框图介绍(熟悉)
      • 3.4.2,通用定时器输出PWM原理(掌握)
      • 3.4.3,PWM模式(熟悉)
      • 3.4.4,通用定时器PWM输出实验配置步骤(掌握)
      • 3.4.5,编程实战:通用定时器PWM输出实验(掌握)![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5f56e90baa3f464fb6830eb8ac3c2982.png)
    • 3.5,通用定时器输入捕获实验(掌握)
      • 3.5.1,通用定时器输入捕获部分框图介绍(熟悉)
      • 3.5.2,通用定时器输入捕获脉宽测量原理(掌握)
      • 3.5.3,通用定时器输入捕获实验配置步骤(掌握)
      • 3.5.4,编程实战:通用定时器输入捕获实验(掌握)
    • 3.6,通用定时器脉冲计数实验(掌握)
      • 3.6.1,脉冲计数实验原理(熟悉)
      • 3.6.2,通用定时器脉冲计数实验配置步骤(掌握)
      • 3.6.3,编程实战:通用定时器脉冲计数实验(掌握)
  • 四、高级定时器(掌握)
    • 4.1,高级定时器简介(了解)
    • 4.2,高级定时器框图(熟悉)
    • 4.3,高级定时器输出指定个数PWM实验(掌握)
      • 4.3.1,重复计数器特性(熟悉)
      • 4.3.2,高级定时器输出指定个数PWM实验原理(掌握)
      • 4.3.3,高级定时器输出指定个数PWM实验配置步骤(掌握)
      • 4.3.4,编程实战:高级定时器输出指定个数PWM实验(掌握)
    • 4.4,高级定时器输出比较模式实验(掌握)
      • 4.4.1,高级定时器输出比较模式实验原理(掌握)
      • 4.4.2,高级定时器输出比较模式实验配置步骤(掌握)
      • 4.4.3,编程实战:高级定时器输出比较模式实验(掌握)
    • 4.5,高级定时器互补输出带死区控制实验(掌握)
      • 4.5.1,互补输出,还带死区控制,什么意思?(了解)
      • 4.5.2,带死区控制的互补输出应用之H桥(了解)
      • 4.5.3,捕获/比较通道的输出部分(通道1至3)(熟悉)
      • 4.5.4,死区时间计算(掌握)
      • 4.5.5,刹车(断路)功能(熟悉)
      • 4.5.6,高级定时器互补输出带死区控制实验配置步骤(掌握)
      • 4.5.7,编程实战:高级定时器互补输出带死区控制实验(掌握)
    • 4.6,高级定时器PWM输入模式实验(掌握)
      • 4.6.1,PWM输入模式工作原理(熟悉)
      • 4.6.2,PWM输入模式时序(熟悉)
      • 4.6.3,高级定时器PWM输入模式实验配置步骤(掌握)
      • 4.6.4,编程实战:高级定时器PWM输入模式实验(掌握)

一、定时器概述(了解)

1.1,软件定时原理

使用纯软件(CPU死等)的方式实现定时(延时)功能
在这里插入图片描述

1.2,定时器定时原理

使用精准的时基,通过硬件的方式,实现定时功能
在这里插入图片描述

1.3,STM32定时器分类

在这里插入图片描述

1.4,STM32定时器特性表

在这里插入图片描述

1.5,STM32基本、通用、高级定时器的功能整体区别

在这里插入图片描述

二、基本定时器(掌握)

2.1,基本定时器简介(了解)

在这里插入图片描述

2.2,基本定时器框图(熟悉)

在这里插入图片描述

2.3,定时器计数模式及溢出条件(熟悉)

在这里插入图片描述
递增计数模式实例说明
在这里插入图片描述
中心对齐模式实例说明
在这里插入图片描述

2.4,定时器中断实验相关寄存器(了解)

TIM6 和TIM7 控制寄存器 1(TIMx_CR1)
在这里插入图片描述
TIM6 和TIM7 DMA/中断使能寄存器(TIMx_DIER)
在这里插入图片描述TIM6 和TIM7 状态寄存器(TIMx_SR)
在这里插入图片描述
TIM6 和TIM7 计数器(TIMx_CNT)
在这里插入图片描述
TIM6 和TIM7 预分频器(TIMx_PSC)
在这里插入图片描述
TIM6 和TIM7 自动重装载寄存器(TIMx_ARR)
在这里插入图片描述

2.5,定时器溢出时间计算方法(掌握)

在这里插入图片描述

2.6,定时器中断实验配置步骤(掌握)

在这里插入图片描述

HAL_TIM_Base_Init()

在这里插入图片描述

HAL_TIM_Base_MspInit()     //配置NVIC、CLOCK等

在这里插入图片描述

HAL_TIM_Base_Start_IT()

在这里插入图片描述

HAL_NVIC_SetPriority()HAL_NVIC_EnableIRQ()

在这里插入图片描述

TIMx_IRQHandler()等、HAL_TIM_IRQHandler()

在这里插入图片描述

HAL_TIM_PeriodElapsedCallback()

相关HAL库函数介绍
在这里插入图片描述
关键结构体介绍
在这里插入图片描述

2.7,编程实战:定时器中断实验(掌握)![在这里插入图

使用定时器6,实现500ms定时器更新中断,在中断里翻转LED0
在这里插入图片描述
btim.c

#include "./BSP/LED/led.h"
#include "./BSP/TIMER/btim.h"
TIM_HandleTypeDef g_timx_handle;  /* 定时器句柄 */
/*** @brief       基本定时器TIMX定时中断初始化函数* @note*              基本定时器的时钟来自APB1,当PPRE1 ≥ 2分频的时候*              基本定时器的时钟为APB1时钟的2倍, 而APB1为36M, 所以定时器时钟 = 72Mhz*              定时器溢出时间计算方法: Tout = ((arr + 1) * (psc + 1)) / Ft us.*              Ft=定时器工作频率,单位:Mhz** @param       arr: 自动重装值。* @param       psc: 时钟预分频数* @retval      无*/
void btim_timx_int_init(uint16_t arr, uint16_t psc)
{g_timx_handle.Instance = BTIM_TIMX_INT;                      /* 通用定时器X */g_timx_handle.Init.Prescaler = psc;                          /* 设置预分频系数 */g_timx_handle.Init.CounterMode = TIM_COUNTERMODE_UP;         /* 递增计数模式 */g_timx_handle.Init.Period = arr;                             /* 自动装载值 */HAL_TIM_Base_Init(&g_timx_handle);HAL_TIM_Base_Start_IT(&g_timx_handle);    /* 使能定时器x及其更新中断 */
}/*** @brief       定时器底层驱动,开启时钟,设置中断优先级此函数会被HAL_TIM_Base_Init()函数调用* @param       htim:定时器句柄* @retval      无*/
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{if (htim->Instance == BTIM_TIMX_INT){BTIM_TIMX_INT_CLK_ENABLE();                     /* 使能TIM时钟 */HAL_NVIC_SetPriority(BTIM_TIMX_INT_IRQn, 1, 3); /* 抢占1,子优先级3,组2 */HAL_NVIC_EnableIRQ(BTIM_TIMX_INT_IRQn);         /* 开启ITM3中断 */}
}/*** @brief       定时器TIMX中断服务函数* @param       无* @retval      无*/
void BTIM_TIMX_INT_IRQHandler(void)
{HAL_TIM_IRQHandler(&g_timx_handle); /* 定时器中断公共处理函数 */
}/*** @brief       定时器更新中断回调函数* @param       htim:定时器句柄* @retval      无*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if (htim->Instance == BTIM_TIMX_INT){LED1_TOGGLE(); /* LED1反转 */}
}

btim.h

#ifndef __BTIM_H
#define __BTIM_H#include "./SYSTEM/sys/sys.h"
/******************************************************************************************/
/* 基本定时器 定义 */
/* TIMX 中断定义 * 默认是针对TIM6/TIM7* 注意: 通过修改这4个宏定义,可以支持TIM1~TIM8任意一个定时器.*/#define BTIM_TIMX_INT                       TIM6
#define BTIM_TIMX_INT_IRQn                  TIM6_DAC_IRQn
#define BTIM_TIMX_INT_IRQHandler            TIM6_DAC_IRQHandler
#define BTIM_TIMX_INT_CLK_ENABLE()          do{ __HAL_RCC_TIM6_CLK_ENABLE(); }while(0)   /* TIM6 时钟使能 */
/******************************************************************************************/
void btim_timx_int_init(uint16_t arr, uint16_t psc);    /* 基本定时器 定时中断初始化函数 */#endif

main.c

#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"
#include "./BSP/TIMER/btim.h"int main(void)
{HAL_Init();                             /* 初始化HAL库 */sys_stm32_clock_init(RCC_PLL_MUL9);     /* 设置时钟, 72Mhz */delay_init(72);                         /* 延时初始化 */usart_init(115200);                     /* 串口初始化为115200 */led_init();                             /* 初始化LED */btim_timx_int_init(5000 - 1, 7200 - 1); /* 10Khz的计数频率,计数5K次为500ms */while (1){LED0_TOGGLE();delay_ms(200);}
}

三、通用定时器(掌握)

3.1,通用定时器简介(了解)

在这里插入图片描述

3.2,通用定时器框图(熟悉)

在这里插入图片描述
在这里插入图片描述

3.3,计数器时钟源(掌握)

在这里插入图片描述
计数器时钟源寄存器设置方法(F1为例)
在这里插入图片描述
外部时钟模式1
在这里插入图片描述
外部时钟模式2
在这里插入图片描述
使用一个定时器作为另一个定时器的预分频器(F1为例)
在这里插入图片描述
解读通用定时器中断实验
在这里插入图片描述

3.4,通用定时器PWM输出实验(掌握)

3.4.1,通用定时器输出比较部分框图介绍(熟悉)

在这里插入图片描述
捕获/比较通道1的主电路—输出部分
在这里插入图片描述
捕获/比较通道的输出部分(通道1)
在这里插入图片描述

3.4.2,通用定时器输出PWM原理(掌握)

在这里插入图片描述

3.4.3,PWM模式(熟悉)

在这里插入图片描述
在这里插入图片描述

3.4.4,通用定时器PWM输出实验配置步骤(掌握)

在这里插入图片描述

HAL_TIM_PWM_Init()

在这里插入图片描述

HAL_TIM_PWM_MspInit()     //配置NVIC、CLOCK、GPIO等

在这里插入图片描述

HAL_TIM_PWM_ConfigChannel()

在这里插入图片描述

HAL_TIM_PWM_Start()

在这里插入图片描述

__HAL_TIM_SET_COMPARE()

在这里插入图片描述

__HAL_TIM_ENABLE_OCxPRELOAD()

相关HAL库函数介绍
在这里插入图片描述
关键结构体介绍
在这里插入图片描述

3.4.5,编程实战:通用定时器PWM输出实验(掌握)在这里插入图片描述

3.5,通用定时器输入捕获实验(掌握)

3.5.1,通用定时器输入捕获部分框图介绍(熟悉)

在这里插入图片描述
捕获/比较通道的输入部分(通道1)
在这里插入图片描述

3.5.2,通用定时器输入捕获脉宽测量原理(掌握)

在这里插入图片描述

3.5.3,通用定时器输入捕获实验配置步骤(掌握)

在这里插入图片描述

HAL_TIM_IC_Init()

在这里插入图片描述

HAL_TIM_IC_MspInit()     //配置NVIC、CLOCK、GPIO等

在这里插入图片描述

HAL_TIM_IC_ConfigChannel()

在这里插入图片描述

HAL_NVIC_SetPriority()HAL_NVIC_EnableIRQ()

在这里插入图片描述

__HAL_TIM_ENABLE_IT()

在这里插入图片描述

HAL_TIM_IC_Start_IT()

在这里插入图片描述

TIMx_IRQHandler()等、 HAL_TIM_IRQHandler()

在这里插入图片描述

HAL_TIM_PeriodElapsedCallback()HAL_TIM_IC_CaptureCallback()

相关HAL库函数介绍
在这里插入图片描述
关键结构体介绍
在这里插入图片描述

3.5.4,编程实战:通用定时器输入捕获实验(掌握)

通过定时器5通道1来捕获按键高电平脉宽时间,通过串口打印出来
在这里插入图片描述

3.6,通用定时器脉冲计数实验(掌握)

3.6.1,脉冲计数实验原理(熟悉)

在这里插入图片描述
外部时钟模式1
在这里插入图片描述

3.6.2,通用定时器脉冲计数实验配置步骤(掌握)

在这里插入图片描述

HAL_TIM_IC_Init()

在这里插入图片描述

HAL_TIM_IC_MspInit()     //配置NVIC、CLOCK、GPIO等

在这里插入图片描述

HAL_TIM_SlaveConfigSynchro()

在这里插入图片描述

HAL_TIM_IC_Start()

在这里插入图片描述

__HAL_TIM_GET_COUNTER()

在这里插入图片描述

__HAL_TIM_SET_COUNTER()

相关HAL库函数介绍
在这里插入图片描述
关键结构体介绍
在这里插入图片描述

3.6.3,编程实战:通用定时器脉冲计数实验(掌握)

将定时器2通道1输入的高电平脉冲作为定时器2的时钟,并通过串口打印脉冲数
在这里插入图片描述

四、高级定时器(掌握)

4.1,高级定时器简介(了解)

在这里插入图片描述

4.2,高级定时器框图(熟悉)

在这里插入图片描述

4.3,高级定时器输出指定个数PWM实验(掌握)

4.3.1,重复计数器特性(熟悉)

在这里插入图片描述
计数器每次上溢或下溢都能使重复计数器减1,减到0时,再发生一次溢出就会产生更新事件

如果设置RCR为N,
更新事件将在N+1
次溢出时发生

4.3.2,高级定时器输出指定个数PWM实验原理(掌握)

在这里插入图片描述

4.3.3,高级定时器输出指定个数PWM实验配置步骤(掌握)

在这里插入图片描述

HAL_TIM_PWM_Init()

在这里插入图片描述

HAL_TIM_PWM_MspInit()   //配置NVIC、CLOCK、GPIO等

在这里插入图片描述

HAL_TIM_PWM_ConfigChannel()

在这里插入图片描述

HAL_NVIC_SetPriority()HAL_NVIC_EnableIRQ()

在这里插入图片描述

__HAL_TIM_ENABLE_IT()

在这里插入图片描述

HAL_TIM_PWM_Start()

在这里插入图片描述

TIMx_IRQHandler()等、HAL_TIM_IRQHandler()

在这里插入图片描述

HAL_TIM_PeriodElapsedCallback()

相关HAL库函数介绍
在这里插入图片描述
关键结构体介绍
在这里插入图片描述

4.3.4,编程实战:高级定时器输出指定个数PWM实验(掌握)

通过定时器8通道1实现指定个数PWM输出,用于控制LED1的亮灭
在这里插入图片描述

4.4,高级定时器输出比较模式实验(掌握)

4.4.1,高级定时器输出比较模式实验原理(掌握)

在这里插入图片描述

4.4.2,高级定时器输出比较模式实验配置步骤(掌握)

在这里插入图片描述

HAL_TIM_OC_Init()

在这里插入图片描述

HAL_TIM_OC_MspInit()   //配置NVIC、CLOCK、GPIO等

在这里插入图片描述

HAL_TIM_OC_ConfigChannel()

在这里插入图片描述

__HAL_TIM_ENABLE_OCxPRELOAD()

在这里插入图片描述

HAL_TIM_OC_Start()

在这里插入图片描述

__HAL_TIM_SET_COMPARE()

相关HAL库函数介绍
在这里插入图片描述
关键结构体介绍
在这里插入图片描述

4.4.3,编程实战:高级定时器输出比较模式实验(掌握)

通过定时器8通道1/2/3/4输出相位分别为25%、50%、75%、100%的PWM
在这里插入图片描述

4.5,高级定时器互补输出带死区控制实验(掌握)

4.5.1,互补输出,还带死区控制,什么意思?(了解)

在这里插入图片描述

4.5.2,带死区控制的互补输出应用之H桥(了解)

在这里插入图片描述

4.5.3,捕获/比较通道的输出部分(通道1至3)(熟悉)

在这里插入图片描述

4.5.4,死区时间计算(掌握)

在这里插入图片描述
举个栗子(F1为例):DTG[7:0]=250
250,即二进制:1111 1010,选第四条
DT = (32+26)1655.56 ns=51.55968us

4.5.5,刹车(断路)功能(熟悉)

在这里插入图片描述
发生刹车后,会怎么样?

在这里插入图片描述

4.5.6,高级定时器互补输出带死区控制实验配置步骤(掌握)

在这里插入图片描述

HAL_TIM_PWM_Init()

在这里插入图片描述

HAL_TIM_PWM_MspInit()     //配置NVIC、CLOCK、GPIO等

在这里插入图片描述

HAL_TIM_PWM_ConfigChannel()

在这里插入图片描述

HAL_TIMEx_ConfigBreakDeadTime()

在这里插入图片描述

HAL_TIM_PWM_Start()

在这里插入图片描述

HAL_TIMEx_PWMN_Start()

相关HAL库函数介绍
在这里插入图片描述
关键结构体介绍
在这里插入图片描述

4.5.7,编程实战:高级定时器互补输出带死区控制实验(掌握)

通过定时器1通道1输出频率为1KHz,占空比为70%的PWM,使用PWM模式1
使能互补输出并设置死区时间控制:设置DTG为100(5.56us),进行验证死区时间是否正确
使能刹车功能:刹车输入信号高电平有效,配置输出空闲状态等,最后用示波器验证
在这里插入图片描述

4.6,高级定时器PWM输入模式实验(掌握)

4.6.1,PWM输入模式工作原理(熟悉)

在这里插入图片描述

4.6.2,PWM输入模式时序(熟悉)

在这里插入图片描述

4.6.3,高级定时器PWM输入模式实验配置步骤(掌握)

在这里插入图片描述

HAL_TIM_IC_Init()

在这里插入图片描述

HAL_TIM_IC_MspInit()     //配置NVIC、CLOCK、GPIO等

在这里插入图片描述

HAL_TIM_IC_ConfigChannel()

在这里插入图片描述

HAL_TIM_SlaveConfigSynchro()

在这里插入图片描述

HAL_NVIC_SetPriority()HAL_NVIC_EnableIRQ()

在这里插入图片描述

HAL_TIM_IC_Start_IT()HAL_TIM_IC_Start()

在这里插入图片描述

TIMx_IRQHandler()等、HAL_TIM_IRQHandler()

在这里插入图片描述

HAL_TIM_IC_CaptureCallback()

相关HAL库函数介绍
在这里插入图片描述
关键结构体介绍
在这里插入图片描述

4.6.4,编程实战:高级定时器PWM输入模式实验(掌握)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/692750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】1143 - 纯粹合数

问题 一个合数,去掉最低位,剩下的数仍是合数,再去掉剩下的数的最低位,余留下来的数还是合数,这样反复,一直到最后剩下的一位数仍是合数;我们把这样的数称为纯粹合数。求所有的三位纯粹合数。 1…

多目图像拼接算法

图像拼接一般要经过图像特征提取、特征匹配、融合等步骤来实现。 特征匹配与变换: SIFT(尺度不变特征变换)SURF(加速鲁棒特征)ORB(Oriented FAST and Rotated BRIEF)AKAZE(加速的KAZE特征)全景图像拼接算法: 基于特征匹配的拼接:利用特征点匹配找到重叠区域,然后进…

YOLO-World:实时开放词汇目标检测

paper:https://arxiv.org/pdf/2401.17270.pdf Github:GitHub - AILab-CVC/YOLO-World: Real-Time Open-Vocabulary Object Detection online demo:https://huggingface.co/spaces/stevengrove/YOLO-World 目录 0. 摘要 1. 引言 2. 相关工…

HCIA-HarmonyOS设备开发认证V2.0-IOT硬件子系统-WatchDog

目录 一、 WATCHDOG 概述功能简介基本概念 二、WATCHDOG 模块相关API三、WATCHDOG HDF驱动开发3.1、开发步骤(待续...) 坚持就有收获 一、 WATCHDOG 概述 功能简介 看门狗(Watchdog),又称看门狗计时器(Watchdog timer&#xff0…

C++ 之LeetCode刷题记录(三十二)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 目标:执行用时击败90%以上使用 C 的用户。 7. 整数反转 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后…

阿赵UE学习笔记——16、渲染性能相关

阿赵UE学习笔记目录 大家好,我是阿赵。   继续学习虚幻引擎的使用。上一篇说了灯光的移动性问题,这一篇来看看怎样去辨别灯光性能的好坏。   虚幻引擎里面有一组显示模式是专门用来看场景当前的灯光和网格渲染的,叫做优化试图模式&#x…

【Vue】fabricjs 实现局部截图及el-image-viewer大图预览

<!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <title>使用fabric.js裁剪和显示图片</title> <script src"https://cdnjs.cloudflare.com/ajax/libs/fabric.js/4.5.0/fabric.min.js"…

adb-环境安装

1. 下载解压包&#xff1a;百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/1TDu2fzGbqCyug3wCSmV9oQ?pwd…

UI美化stylesheet

一、网上找到自己喜欢的图标 大家可以每个图标类型找出三种不同的颜色&#xff0c;方便后续美化效果&#xff0c;这里我每种只找了一个。&#xff08;随便找的&#xff0c;最后效果不好看&#xff09; 将这个文件夹复制到项目的文件夹中。 然后右键Add New…选择QT&#xff0c…

list链表

1. list基本概念 功能&#xff1a;将数据进行链式存储 链表&#xff08;list&#xff09;是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成&#xff1a;链表由一系列结点组成 结点的组成&#xff1a;一个是存储数据…

阿里云OSS和SEC服务器,免费ssl证书申请和安装

一&#xff1a;阿里云OSS证书申请和安装 1创建免费证书等待签发 2验证&#xff0c;复制DNS解析配置 3在主体域名中解析DNS&#xff08;记录复制上面的证书申请配置&#xff09; 4验证域名DNS配置 5下载证书 6安装OSS证书 7上传证书&#xff08;下载的证书解压&#xff09…

Paddlepaddle使用自己的VOC数据集训练目标检测(0废话简易教程)

一 安装paddlepaddle和paddledection&#xff08;略&#xff09; 笔者使用的是自己的数据集 二 在dataset目录下新建自己的数据集文件&#xff0c;如下&#xff1a; 其中 xml文件内容如下&#xff1a; 另外新建一个createList.py文件&#xff1a; # -- coding: UTF-8 -- imp…

探索水下低光照图像检测性能,基于DETR(DEtection TRansformer)模型开发构建海底生物检测识别分析系统

海底这类特殊数据场景下的检测模型开发相对来说比较少&#xff0c;在前面的博文中也有一些涉及&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《尝试探索水下目标检测&#xff0c;基于yolov5轻量级系列模型n/s/m开发构建海底生物检测系统》 《基于YOLOv5C3CBAMCBA…

app逆向-平头哥框架ratel使用

文章目录 一、前言二、实现逻辑1、安装ratel手机端app2、使⽤电脑端进⾏感染目标app3、开发⼀个平头哥插件 一、前言 平头哥&#xff08;ratel&#xff09;是⼀个Android逆向分析⼯具套件&#xff0c;他提供⼀系列渐进式app逆向分析⼯具。同时平头哥也是⼀个app⼆次开发的沙箱…

【运维】站点可靠性工程介绍:研发,运维,SRE,Devops的关系

文章目录 1、什么是SRE2、SRE与研发、运维的区别 1、什么是SRE 站点可靠性工程&#xff08;SRE&#xff09; 是 IT 运维的软件工程方案。 SRE 团队使用软件作为工具&#xff0c;来管理系统、解决问题并实现运维任务自动化。 SRE 执行的任务以前通常由运维团队手动执行&#x…

Elasticsearch:创建自定义 ES Rally tracks 的分步指南

作者&#xff1a;Alejandro Snchez 按照这个综合教程学习如何制作个性化的 Rally tracks ES Rally 是什么&#xff1f;它的用途是什么&#xff1f; ES Rally 是一个用于在 Elasticsearch 上测试性能的工具&#xff0c;允许你运行和记录比较测试。 做出决策可能很困难&#x…

OpenCV统计函数之minMaxLoc和meanStdDev

在OpenCV中&#xff0c;minMaxLoc和meanStdDev是两个用于统计图像或数组中元素的基本特性的函数。这些统计函数对于图像处理、特征提取和数据分析非常有用。 minMaxLoc minMaxLoc函数用于查找数组或图像中的最小值和最大值&#xff0c;并可选地返回这些值的位置。这在处理图像…

Vue模版语法之属性绑定v-bind

双大括号不能在 HTML 属性中使用。想要响应式地绑定一个属性&#xff0c;应该使用 v-bind 指令 1. 使用v-bind绑定属性 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>新建页面</title><sc…

一个PDF处理利器的.Net开源项目

在项目开发中&#xff0c;处理PDF文件是一个非常常见的需求&#xff0c;之前也推荐几个&#xff0c;今天继续给大家推荐一个强大且易于使用的开源库&#xff0c;专门用于处理PDF文件&#xff0c;它提供了一系列功能强大的工具&#xff0c;帮助开发人员轻松地解析、修改和创建PD…

基于物联网智慧公厕的多功能城市智慧驿站

在现代城市发展中&#xff0c;智慧化已经成为了一个不可或缺的趋势。而多功能城市智慧驿站&#xff0c;作为智慧城市建设的一部分&#xff0c;以物联网智慧公厕为基础&#xff0c;集合了诸多功能于一身&#xff0c;成为了城市中不容忽视的存在。多功能城市智慧驿站也称为轻松的…