STM32F103C8T6第二天:按键点灯轮询法和中断法、RCC、电动车报警器(振动传感器、继电器、喇叭、433M无线接收发射模块)

1. 点亮LED灯详解(307.11)

  • 标号一样的导线在物理上是连接在一起的。
    在这里插入图片描述
    在这里插入图片描述
  • 将 PB8 或 PB9 拉低,就可以实现将对应的 LED 灯点亮。
  • 常用的GPIO HAL库函数:
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);//I/O口的初始化配置
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState
PinState);//对I/O口写高写低
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);//翻转I/O口的状态
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();//时钟:使GPIOB能工作,节约能耗,资源最大化的利用
  • 结构体 GPIO_InitTypeDef 定义:
typedef struct
{
uint32_t Pin;//引脚编号
uint32_t Mode;//输入|推挽输出|开漏输出
uint32_t Pull;//上拉|下拉|不拉
uint32_t Speed;//低速|中速|高速
} GPIO_InitTypeDef;

2. 按键点亮LED灯(轮询法)(308.12)

  • 输入(按键):
    • KEY1:PA0
    • KEY2:PA1
  • 输出(LED灯):
    • LED1:PB8
    • LED2:PB9
      在这里插入图片描述
  • 代码(key_test/MDK-ARM)
//main.c
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
#define KEY_ON  0
#define KEY_OFF 1
/* USER CODE END PM */
uint8_t Key_Scan(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
{//检测按键的状态if(HAL_GPIO_ReadPin(GPIOx, GPIO_Pin) == GPIO_PIN_RESET){	/* 按键按下 */while(HAL_GPIO_ReadPin(GPIOx, GPIO_Pin) == GPIO_PIN_RESET);//消除按键抖动(防抖操作)return KEY_ON;}else{	/* 按键松开 */return KEY_OFF;}
}
int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();while (1){//按下key时,翻转led的状态/* USER CODE END WHILE *///HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8|GPIO_PIN_9, GPIO_PIN_RESET);/* USER CODE BEGIN 3 */if(Key_Scan(GPIOA, GPIO_PIN_0) == KEY_ON)HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);if(Key_Scan(GPIOA, GPIO_PIN_1) == KEY_ON)HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);}
}

3. 复位和时钟控制(RCC)(309.13)

  • reset and clock control

复位

  • 系统复位
    当发生以下任一事件时,产生一个系统复位:
      1. NRST引脚上的低电平(外部复位)
      2. 窗口看门狗计数终止(WWDG复位)
      3. 独立看门狗计数终止(IWDG复位)
      4. 软件复位(SW复位)
      5. 低功耗管理复位
  • 电源复位
    当以下事件中之一发生时,产生电源复位:
      1. 上电/掉电复位(POR/PDR复位)
      2. 从待机模式中返回
  • 备份区复位
    备份区域拥有两个专门的复位,它们只影响备份区域。
    当以下事件中之一发生时,产生备份区域复位。
      1. 软件复位,备份区域复位可由设置备份域控制寄存器 (RCC_BDCR)(见6.3.9节)中的BDRST位
        产生。
      2. 在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位。

时钟控制

  • 什么是时钟?
    时钟打开,对应的设备才会工作。
  • 时钟来源
    • 三种不同的时钟源可被用来驱动系统时钟(SYSCLK)
      • HSI振荡器时钟(高速内部时钟)
      • HSE振荡器时钟(高速外部时钟)
      • PLL时钟(锁相环倍频时钟)
    • 二级时钟源:
      • 40kHz低速内部RC(LSIRC)振荡器
      • 32.768kHz低速外部晶体(LSE晶体)
  • 如何使用CubeMX配置时钟
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

4. 中断相关概念(310.14)

什么是中断?

  • 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入
    处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。

什么是 EXTI?

  • 外部中断/事件控制器 (EXTI) 管理了控制器的 23 个中断/事件线。每个中断/事件线都对应有一个边沿检测
    器,可以实现输入信号的上升沿检测和下降沿的检测。 EXTI 可以实现对每个中断/事件线进行单独配置,可
    以单独配置为中断或者事件,以及触发事件的属性。
    在这里插入图片描述
  • EXTI 可分为两大部分功能,一个是产生中断,另一个是产生事件,这两个功能从硬件上就有所不同。
    产生中断线路目的是把输入信号输入到 NVIC,进一步会运行中断服务函数,实现功能,这样是软件级的。而
    产生事件线路目的就是传输一个脉冲信号给其他外设使用,并且是电路级别的信号传输,属于硬件级的。
  • EXTI初始化结构体:
typedef struct
{//中断/事件线uint32_t EXTI_Line;        /*!< Specifies the EXTI lines to be enabled or
disabled.This parameter can be any combination value
of @ref EXTI_Lines *///EXTI 模式EXTIMode_TypeDef EXTI_Mode;    /*!< Specifies the mode for the EXTI lines.This parameter can be a value of @ref
EXTIMode_TypeDef *///触发类型EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge
for the EXTI lines.This parameter can be a value of @ref
EXTITrigger_TypeDef *///EXTI 控制FunctionalState EXTI_LineCmd;   /*!< Specifies the new state of the selected
EXTI lines.This parameter can be set either to ENABLE
or DISABLE */
}EXTI_InitTypeDef;
  • 中断/事件线:
#define EXTI_Line0    ((uint32_t)0x00001)   /*!< External interrupt line 0 */
#define EXTI_Line1    ((uint32_t)0x00002)   /*!< External interrupt line 1 */
#define EXTI_Line2    ((uint32_t)0x00004)   /*!< External interrupt line 2 */
#define EXTI_Line3    ((uint32_t)0x00008)   /*!< External interrupt line 3 */
#define EXTI_Line4    ((uint32_t)0x00010)   /*!< External interrupt line 4 */
#define EXTI_Line5    ((uint32_t)0x00020)   /*!< External interrupt line 5 */
#define EXTI_Line6    ((uint32_t)0x00040)   /*!< External interrupt line 6 */
#define EXTI_Line7    ((uint32_t)0x00080)   /*!< External interrupt line 7 */
#define EXTI_Line8    ((uint32_t)0x00100)   /*!< External interrupt line 8 */
#define EXTI_Line9    ((uint32_t)0x00200)   /*!< External interrupt line 9 */
#define EXTI_Line10   ((uint32_t)0x00400)   /*!< External interrupt line 10 */
#define EXTI_Line11   ((uint32_t)0x00800)   /*!< External interrupt line 11 */
#define EXTI_Line12   ((uint32_t)0x01000)   /*!< External interrupt line 12 */
#define EXTI_Line13   ((uint32_t)0x02000)   /*!< External interrupt line 13 */
#define EXTI_Line14   ((uint32_t)0x04000)   /*!< External interrupt line 14 */
#define EXTI_Line15   ((uint32_t)0x08000)   /*!< External interrupt line 15 */
#define EXTI_Line16   ((uint32_t)0x10000)   /*!< External interrupt line 16
Connected to the PVD Output */
#define EXTI_Line17   ((uint32_t)0x20000)   /*!< External interrupt line 17
Connected to the RTC Alarm event */
#define EXTI_Line18   ((uint32_t)0x40000)   /*!< External interrupt line 18
Connected to the USB OTG FS Wakeup from suspend event */              
#define EXTI_Line19   ((uint32_t)0x80000)   /*!< External interrupt line 19
Connected to the Ethernet Wakeup event */
#define EXTI_Line20   ((uint32_t)0x00100000)  /*!< External interrupt line 20
Connected to the USB OTG HS (configured in FS) Wakeup event */
#define EXTI_Line21   ((uint32_t)0x00200000)  /*!< External interrupt line 21
Connected to the RTC Tamper and Time Stamp events */                
#define EXTI_Line22   ((uint32_t)0x00400000)  /*!< External interrupt line 22
Connected to the RTC Wakeup event */
  • EXTI 模式:
typedef enum
{EXTI_Mode_Interrupt = 0x00,  //产生中断EXTI_Mode_Event = 0x04    //产生事件
}EXTIMode_TypeDef;
  • 触发类型:
typedef enum
{EXTI_Trigger_Rising = 0x08,     //上升沿EXTI_Trigger_Falling = 0x0C,     //下降沿EXTI_Trigger_Rising_Falling = 0x10  //上升沿和下降沿都触发
}EXTITrigger_TypeDef;
  • EXTI 控制:
    使能 EXTI ,一般都是使能, ENABLE

什么是优先级?

抢占优先级和响应优先级的区别:

  • 高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。
  • 抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。
  • 抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。
  • 如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行

什么是优先级分组?

Cortex-M3 允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此 STM32 把指定中断优先级的寄存器位减少到 4 位,这 4 个寄存器位的分组方式如下:

  • 第0组:所有4位用于指定响应优先级
  • 第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
  • 第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级
  • 第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级
  • 第4组:所有4位用于指定抢占式优先级

什么是NVIC?

STM32 通过中断控制器 NVIC(Nested Vectored Interrupt Controller)进行中断的管理 。NVIC 是属于 Cortex 内核的器件,不可屏蔽中断(NMI)和外部中断都由它来处理,但是 SYSTICK 不是由 NVIC 控制的。

typedef struct
{uint8_t NVIC_IRQChannel;uint8_t NVIC_IRQChannelPreemptionPriority;  //抢断优先级uint8_t NVIC_IRQChannelSubPriority;  //响应优先级   FunctionalState NVIC_IRQChannelCmd;   
} NVIC_InitTypeDef;

什么是中断向量表?

  • 每个中断源都有对应的处理程序,这个处理程序称为中断服务程序,其入口地址称为中断向量。所有中
    断的中断服务程序入口地址构成一个表,称为中断向量表;也有的机器把中断服务程序入口的跳转指令构成
    一张表,称为中断向量跳转表。

5. 按键点亮LED灯(中断法)(311.15)

  1. 配置时钟
    在这里插入图片描述
    在这里插入图片描述
  2. 配置GPIO口
    在这里插入图片描述
  3. 使能中断
    在这里插入图片描述
  • 代码(4.exti_test/MDK-ARM)
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)//中断服务函数
{switch(GPIO_Pin){HAL_Delay(50);//为了消抖case GPIO_PIN_0:if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)//消抖:如果下降沿之后的50ms还是低(消除意外抖动带来的低电平情况)HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);//翻转LED灯状态break;case GPIO_PIN_1:if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET)HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);break;}
}

6. 电动车报警器项目概述(312.16)

项目需求

  • 点击遥控器 A 按键,系统进入警戒模式,一旦检测到震动(小偷偷车),则喇叭发出声响报警,吓退小偷。
  • 点击遥控器 B 按键,系统退出警戒模式,再怎么摇晃系统都不会报警,否则系统一直发出尖叫,让车主尴
    尬。

项目框图

在这里插入图片描述

硬件清单

  • 振动传感器
  • 继电器
  • 高功率喇叭
  • 433M无线接收发射模块
  • 杜邦线

7. 振动传感器介绍及实战(313.17)

振动传感器介绍

  • 单片机供电VCC GND接单片机
  • 产品不震动,输出高电平,模块上的DO口
  • 产品震动,输出低电平,绿色指示灯亮
  • AO口不用
    在这里插入图片描述

编程实现

  • 需求:当振动传感器接收到振动信号时,使用中断方式点亮LED1。
  • CubeMX 的必要配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 代码(5.alert_project/MDK-ARM)
//重写中断服务函数,如果检测到EXTI中断请求,则进入此函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{//一根中断线上接有多个中断源,判断中断源是否来自PA4if(GPIO_Pin == GPIO_PIN_4){//如果检测到PA4被拉低if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4) == GPIO_PIN_RESET){//则点亮LED1HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);HAL_Delay(1000);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);}else{//如果未检测到PA4被拉低,则关闭LED1HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);}}
}
  • 如果直接在中断服务函数里调用 HAL_Delay 函数,则会造成系统卡死。
    • 原因:程序初始化时默认把滴答定时器的中断优先级设为最低,其它中断源很容易打断它导致卡死。
    • 解决:在 main 函数里使用以下函数提高滴答定时器的中断优先级(提升至0):
      HAL_NVIC_SetPriority(SysTick_IRQn,0,0);
    • 并且将 EXTI4 的中断优先级设置比滴答定时器的中断优先级高,比如 2 。
      在这里插入图片描述

8. 继电器介绍及实战(314.18)

继电器工作原理

  • 单片机供电VCC GND接单片机,VCC需要接3.3V,5V不行!
  • 最大负载电路交流250V/10A,直流30V/10A
  • 引脚 IN 接收到低电平时开关闭合。(PB8,同时led1亮)
  • 电源的负极—负载的负极
  • 电源的正极、负载的正极分别接到继电器的 com 和 NO 口(可反)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

9. 433M无线发射接收模块介绍及实战(315.19)

433M无线发射接收模块介绍

  • 单片机供电VCC GND接单片机
  • 接收到信号,接收模块对应针脚输出高电平
  • 有D0 D1 D2 D3,对应遥控器的ABCD在这里插入图片描述

编程实现

  • 需求:按下遥控器A按键,LED1亮1秒;按下遥控器B按键,LED2亮1秒。
    • D0 – PA5
    • D1 – PA6
  • 修改 cubemx 工程配置:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 代码(5.alert_project/MDK-ARM)
//重写中断服务函数,如果检测到EXTI中断请求,则进入此函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{switch(GPIO_Pin){	case GPIO_PIN_5:if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_5) ==  GPIO_PIN_SET){// 如果检测到PA5被拉高(即按键A被按下)// 则将PB8拉低,LED1亮1秒HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);HAL_Delay(1000);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);}else{// 未检测到PA5被拉高,则LED1灭HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);}break;case GPIO_PIN_6:if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_6) ==  GPIO_PIN_SET){// 如果检测到PA6被拉高(按键B被按下)// 则将PB9拉低,LED2亮1秒HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET);HAL_Delay(1000);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET);}else{// 未检测到PA5被拉高,则LED1灭HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET);}break;}
}

10. 电动车报警器项目设计及(316.20)

项目设计

//如果检测到PA4被拉低(小偷偷车),并且警报模式打开//则将PB7拉低,继电器通电,喇叭一直响
// 如果检测到PA5被拉高(按键A按下),设定为开启警报模式// 则将PB7拉低(喇叭响),2秒后恢复电平(喇叭不响),表示进入警报模式// 同时将标志位设置为ON
// 如果检测到PA6被拉高(按键B按下),设定为关闭警报模式// 则将PB7拉低(喇叭响),1秒后恢复电平(喇叭不响),表示关闭警报模式// 同时将标志位设置为OFF

编程实现

  • cubemx工程修改
    在这里插入图片描述
  • 代码(5.alert_project/MDK-ARM)
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
#define J_ON  1
#define J_OFF 2
/* USER CODE END PM */
//重写中断服务函数,如果检测到EXTI中断请求,则进入此函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{static int mark = J_OFF;//只在首次初始化时分配内存,且在函数调用之间保留其值switch(GPIO_Pin){// 如果检测到PA4被拉低(发生振动 即小偷偷车),并且警报模式打开case GPIO_PIN_4:if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4) ==  GPIO_PIN_RESET && mark == J_ON){// 则将PB7拉低,继电器通电,喇叭一直响HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET);}break;// 如果检测到PA5被拉高(按键A被按下),设定为开启警报模式case GPIO_PIN_5:if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_5) ==  GPIO_PIN_SET){// 则将PB7拉低(喇叭响),2秒,表示进入到警报模式HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET);HAL_Delay(2000);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET);// 同时将标示位设置为ONmark = J_ON;}break;// 如果检测到PA6被拉高(按键B被按下),设定为关闭警报模式case GPIO_PIN_6:if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_6) ==  GPIO_PIN_SET){// 则将PB7拉低(喇叭响),1秒,表示关闭警报模式HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET);HAL_Delay(1000);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET);// 同时将标示位设置为OFFmark = J_OFF;}}
}

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

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

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

相关文章

【深度学习】pytorch——神经网络工具箱nn

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ 深度学习专栏链接&#xff1a; http://t.csdnimg.cn/dscW7 pytorch——神经网络工具箱nn 简介nn.Modulenn.Module实现全连接层nn.Module实现多层感知机 常用神经网络层图像相关层卷积层&#xff08;Conv&#xff…

高压放大器能够在哪里使用呢

高压放大器是一种重要的电子设备&#xff0c;可以在许多不同的领域和应用中使用。下面西安安泰将详细介绍高压放大器的应用。 医学影像&#xff1a;高压放大器在医学影像领域具有广泛的应用。医学影像设备&#xff08;如X射线机、CT扫描仪等&#xff09;需要高压来产生足够的能…

VUE3 TypeError: defineConfig is not a function

VUE3 TypeError: defineConfig is not a function 1. 问题2. 原因3. 解决 1. 问题 在运行npm run serve时&#xff0c;出现报错&#xff1a; 2. 原因 原因&#xff1a;由于用vue-cli直接创建了vue 3的项目&#xff0c;而里面的生态并非都是最新版&#xff0c;vue.config.js…

摄影师的必备神器:这三款炙手可热的人像修图工具了解一下!

不会吧&#xff0c;现在还有人不修图就直接上传照片吧&#xff1f;作为新时代的精致男孩女孩&#xff0c;修复工具是一定必不可少的&#xff0c;随着手机拍照的流行&#xff0c;许多后期的图片修复工具也是很强大的&#xff0c;有的甚至可以帮助我们一键搞定修图&#xff0c;无…

11 传输层协议

1、传输层里比较重要的两个协议&#xff0c;一个是 TCP&#xff0c;一个是UDP 对于不从事底层开发的人员来讲&#xff0c;或者对于开发应用的人来讲&#xff0c;最常用的就是这两个协议。 2、TCP 和 UDP 有哪些区别&#xff1f; 1.TCP 是面向连接的&#xff0c;UDP 是面向无…

微服务之Eureka

文章目录 一、Eureka介绍1.Eureka的作用2.总结 二.搭建Eureka服务端步骤1.导入maven依赖2.编写启动类&#xff0c;添加EnableEurekaServer注解3.添加application.yml文件&#xff0c;编写下面的配置&#xff1a; 三.注册Eureka客户端服务提供者&#xff08;user-service&#x…

java高级之单元测试、反射

1、Junit测试工具 Test定义测试方法 1.被BeforeClass标记的方法,执行在所有方法之前 2.被AfterCalss标记的方法&#xff0c;执行在所有方法之后 3.被Before标记的方法&#xff0c;执行在每一个Test方法之前 4.被After标记的方法&#xff0c;执行在每一个Test方法之后 public …

Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库

背景介绍 Apache Doris是一个基于MPP架构的易于使用&#xff0c;高性能和实时的分析数据库&#xff0c;以其极高的速度和易用性而闻名。海量数据下返回查询结果仅需亚秒级响应时间&#xff0c;不仅可以支持高并发点查询场景&#xff0c;还可以支持高通量复杂分析场景。 这些都…

数据库系统概念系列 - 数据库系统的历史

从商业计算机的出现开始&#xff0c;数据处理就一直推动着计算机的发展。事实上&#xff0c;数据处理自动化早于计算机的出现。Herman Hollerith 发明的穿孔卡片&#xff0c;早在20世纪初就用来记录美国的人口普查数据&#xff0c;并且用机械系统来处理这些卡片和列出结果。穿孔…

麒麟KYLINIOS软件仓库搭建02-软件仓库添加新的软件包

原文链接&#xff1a;麒麟KYLINIOS软件仓库搭建02-软件仓库添加新的软件包 hello&#xff0c;大家好啊&#xff0c;今天给大家带来麒麟桌面操作系统软件仓库搭建的文章02-软件仓库添加新的软件包&#xff0c;本篇文章主要给大家介绍了如何在麒麟桌面操作系统2203-x86版本上&…

【1++的Linux】之线程(二)

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;对上一篇内容的补充二&#xff0c;Linux线程互斥1. 互斥的引出2. 互斥量3. 剖析锁的原理 一&#xff0c;对上一篇内容的补充 线程创建&#xff1a; pthread…

nginx--install

1. ubuntu 1.1 下载并解压依赖 每个包去各自官网下载 stable 版就行。 tar xzvf nginx-1.24.0.tar.gz tar xzvf openssl-3.1.4.tar.gz tar xzvf pcre2-10.42.tar.gz tar xzvf zlib-1.3.tar.gz1.2 配置及安装 参数含义详见 nginx 官网 cd nginx-1.24.0./configure --pre…

随时随地时时刻刻使用GPT类应用

疑问 很多人说GPT的广泛使用可能会使人们失业&#xff0c;会对一些互联网公司的存活造成挑战&#xff0c;那么这个说法是真的吗&#xff1f; 这个说法并不完全准确。虽然GPT等AI技术的广泛应用可能会对某些行业和职业产生影响&#xff0c;但并不意味着它会导致人们失业或互联网…

Zookeeper3.7.1分布式安装部署

上传安装文件到linux系统上面 解压安装文件到安装目录 [zhangflink9wmwtivvjuibcd2e package]$ tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/software/3. 修改解压文件名 [zhangflink9wmwtivvjuibcd2e software]$ mv apache-zookeeper-3.7.1-bin/ zookeeper-3.7…

2021年电工杯数学建模B题光伏建筑一体化板块指数发展趋势分析及预测求解全过程论文及程序

2021年电工杯数学建模 B题 光伏建筑一体化板块指数发展趋势分析及预测 原题再现&#xff1a; 国家《第十四个五年规划和 2035 年远景目标纲要》中提出&#xff0c;将 2030 年实现“碳达峰”与 2060 年实现“碳中和”作为我国应对全球气候变暖的一个重要远景目标。光伏建筑一体…

力扣最热一百题——盛水最多的容器

终于又来了。我的算法记录的文章已经很久没有更新了。为什么呢&#xff1f; 这段时间都在更新有关python的文章&#xff0c;有对python感兴趣的朋友可以在主页找到。 但是这也并不是主要的原因 在10月5号我发布了我的第一篇博客&#xff0c;大家也可以看见我的每一篇算法博客…

Canal同步Mysql数据到ES以及Springboot项目查询ES数据

1、环境准备 服务器&#xff1a;Centos7 Jdk版本&#xff1a;1.8 Mysql版本&#xff1a;5.7.44 Canal版本&#xff1a;1.17 Es版本&#xff1a;7.12.1 kibana版本&#xff1a;7.12.1 软件包下载地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1jRpCJP0-hr9aI…

Elasticsearch:在 ES|QL 中使用 DISSECT 和 GROK 进行数据处理

目录 DISSECT 还是 GROK&#xff1f; 或者两者兼而有之&#xff1f; 使用 DISSECT 处理数据 Dissect pattern 术语 例子 DISSECT 关键修饰符 右填充修饰符 (->) 附加修饰符 () 添加顺序修饰符&#xff08; 和 /n&#xff09; 命名的跳过键&#xff08;&#xff1f…

LLM之Prompt(一):5个Prompt高效方法在文心一言3.5的测试对比

在Effective Prompt: 编写高质量Prompt的14个有效方法文中我们了解了14个编写Prompt的方法&#xff08;非常感谢原作者&#xff09;&#xff0c;那么这些Prompt在具体大模型中的效果如何呢&#xff1f;本文以百度文心一言3.5版本大模型在其中5个方法上做个测试对比。 第1条&am…

MySQL复习总结(二):进阶篇(索引)

文章目录 一、存储引擎1.1 MySQL体系结构1.2 存储引擎介绍1.3 存储引擎特点1.4 存储引擎选择 二、索引2.1 基本介绍2.2 索引结构2.3 索引分类2.4 索引语法2.5 SQL性能分析2.6 索引使用2.6.1 最左前缀法则2.6.2 范围查询2.6.3 索引失效情况2.6.4 SQL提示2.6.5 覆盖索引2.6.6 前缀…