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

news2024/12/24 3:23:50

这里写目录标题

  • 一、定时器概述(了解)
    • 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.coloradmin.cn/o/1460923.html

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

相关文章

【笔试强训错题选择题】Day1.习题(错题)解析

文章目录 前言 错题题目 错题解析 总结 前言 错题题目 1. 2. 3. 错题解析 1. 解析:D 解题思路: 本题有一个父类Base;同时有一个子类Child继承父类Base; 本题考察的是子类中的方法要与父类的方法构成重写的操作; 相…

springboot整合mybatisPlus超级详细

springboot整合mybatis-plus超级详细 一、环境二、springboot整合myBatisPlus2.1新建2.2 添加Mybatis-plus和mysql依赖2.3 修改配置文件2.4 新建包和文件2.5 新建表2.6 创建实体类2.7 创建Mapper接口2.8 创建Service接口2.9 创建Service实现类2.10 增删改查 MyBatis-Plus&#…

【前端】前端三要素之DOM

写在前面:本文仅包含DOM内容,JavaScript传送门在这里,BOM传送门在这里。 本文内容是假期中刷的黑马Pink老师视频(十分感谢Pink老师),原文保存在个人的GitLab中,如果需要写的网页内容信息等可以评…

Springboot项目的run debug都是灰色解决方法

IDEA下新建SpringBoot项目后,问题显示如下: 解决方法如下: 这个问题是由于缺少Configuration构建器的原因,因此: 1.点击Add Configuration 添加Spring Boot构建器,启动类选择好,点击确认即可&a…

2024新版Java高频面试题+Java八股文面试真题

Java面试题_2024新版Java高频面试题Java八股文面试真题 Java高频面试专题视频课程,瓤括了Java生态下的主流技术面试题,课程特色: 1、全面,jvm、并发编程、mysql、rabbitmq、spring、mybatis、redis、分布式、微服务、数据结构等等…

在UE5中使用OverlayMaterial制作多材质效果

UE5.1中新增了OverlayMaterial,可以让物体套用2个材质球效果,如A材质球为正常材质内容,B材质球为菲涅尔,或是B材质球是法线外拓描边等,该功能类似Unity的多pass效果,方便了日常使用。 下面就讲将怎么用Ove…

(十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用

前言 本节内容我们主要介绍在Jenkins流水线中,其构建过程中的一些构建策略的配置,例如通过远程http构建、定时任务构建、轮询SCM构建、参数化构建、Git hook钩子触发构建等,可根据不同的需求完成不同构建策略的配置。 正文 Throttle build…

TypeScript on the way:学习TypeScript

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 早该学学了. 之前写过Python的类型系统,如果对于写C,Java,C#等这类语言来说,typing根本不成问题,所以理解TypeScript也不是问题. 特殊的类型 any,unknown与never any,unknown是"顶层类型",never是&quo…

Docker启动后怎样运行jar包文件

启动容器: docker run -it your-image-name /bin/bash 我们用ls查看文件,在我们进入容器时并没有看到jar包,我们需要将jar包复制到Docker容器中: docker cp /PATH/xxx.jar containerName:/tmp/workdir/xxx.jar 复制过后就能看到在对应路径…

USB-C 音频转接器工作原理介绍

Type-C音频转接器:引领未来视听新纪元 随着科技浪潮的推进,Type-C接口已逐渐成为电子设备的主流选择。其正反随意插、高速传输和强大功能等独特优势,使得Type-C接口在日常生活中的应用越来越广泛。而Type-C音频转接器,作为连接Ty…

第15届机械与航空航天工程国际会议 (ICMAE 2024) 即将召开!

2024年第15届机械与航空航天工程国际会议(ICMAE 2024)将于2024年7月17 日至20日在克罗地亚萨格勒布举行。近几十年来,机械与航空航天工程在机器人、汽车系统、工业自动化、太空探索等重点领域取得了显著进展。本次会议将汇聚行业内的专家、学…

牛刀小试 - C++ 学生信息管理系统

参考文档: C实现:学生管理系统(详细解析) 关于switch中的default里面的break是否可以省略这件事 需求要求: (1)增加记录 (2)查找记录 (3)删除…

linux ext3/ext4文件系统(part2 jbd2)

概述 jbd2(journal block device 2)是为块存储设计的 wal 机制,它为要写设备的buffer绑定了一个journal_head,这个journal_head与一个transaction绑定,随着事务状态的转移(运行,生成日志&#…

智能工厂建设模式及解决方案供应商---万界星空科技

今天就聊聊企业智能工厂的打造,企业想实现数字化转型建立智能工厂,就需要先建设数字化车间,可以说数字化车间是建设智能工厂的重要一环,智能工厂的基础是数字化车间。 一、智能工厂特征: 1,智能系统集成…

【前端】前端三要素之BOM

写在前面:本文仅包含BOM内容,JavaScript传送门在这里,DOM传送门在这里。 本文内容是假期中刷的黑马Pink老师视频(十分感谢Pink老师),原文保存在个人的GitLab中,如果需要写的网页内容信息等可以评…

如何更换过期的SSL证书?

SSL证书是保护网站安全的重要组成部分,它能在客户端和服务器之间建立数据传输加密通道,防止数据在传输过程中被泄露、劫持和窃听。但SSL证书也有有效期限,当SSL证书到期时,您需要及时更换它,以确保网站的安全性和可信度…

Spring相关注解

文章目录 Spring注解Bean1、Bean 概述2、Bean 的声明1)搭配 Configuration2)搭配 Component3)搭配 ApplicationContext 3、Bean 的注入1)NO(主要关注这个)【1】同一配置类【2】不同配置类 2)BY_…

信奥一本通:1085:球弹跳高度的计算

这个题的点在于注意他求得是一共经过的米数&#xff0c;也就是下降起跳都算在里面&#xff0c;例如第一次下降20再起跳15就是一次循环的高度 #include <iostream> # include <iomanip> using namespace std; double h,c1,s; int main(){cin >> h;s h;while…

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK 全部学习汇总&#xff1a; g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 上面是涉及到的源代码&#xff0c;而这次需要分析的就是78、79行的两个中断。首先&#xff0c;需要确认NVIC_SYSPRI2寄存器的作用。 进一…

MySQL篇—事务和隔离级别介绍

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…