三、GPIO

一、GPIO簡介

  • GPIO(General Purpose Input Output)通用輸入輸出口
  • GPIO引腳電平:0V(低電平)~3.3V(高電平),部分引腳可容忍5V
    • 容忍5V,即部分引腳輸入5V的電壓,也認為是高電平;引腳定義中有FT(Five Tolerate)即表示可容忍5V;
    • 對于輸出而言,最大就只能輸出3.3V,因為供電就只有3.3V;
  • 可配置為8種輸入輸出模式;
  • 輸出模式下可控制端口輸出高低電平,用以驅動LED、控制蜂鳴器、模擬通信協議輸出時序等;
  • 輸入模式下可讀取端口的高低電平或電壓,用于讀取按鍵輸入、外接模塊電平信號輸入、ADC電壓采集、模擬通信協議接收數據等;

二、GPIO基本結構

1.GPIO整體結構

在這里插入圖片描述

  • STM32上,所有的GPIO都是掛載在APB2時鐘總線上;
  • GPIO外設的名稱按照GPIOA、B、C等等來命名的;
  • 每個GPIO外設有16個引腳,編號0~15;
  • 每個GPIO模塊內,主要包含了寄存器和驅動器;
    • 寄存器就是一段特殊的存儲器,內核可以通過APB2總線對寄存器進行讀寫,從而實現電平的輸出和讀取功能;
      • 寄存器的每一位對應一個引腳;
      • 輸出寄存器寫1,對應引腳就會輸出高電平;寫0,就會輸出低電平;
      • 輸入寄存器讀取為1,對應引腳目前為高電平;讀取為0,為低電平;
      • STM32為32位的單片機,所以STM32內部的寄存器都是32位,但每個GPIO只有16個引腳,所以寄存器只有低16位有對應的引腳,高16位是沒有用到的;
    • 驅動器是用來增加信號的驅動能力,寄存器只負責存儲數據;當進行點燈這樣的操作,還是需要驅動器增大驅動能力;

2.GPIO位結構

在這里插入圖片描述

  • 保護二極管:用于限制引腳的輸入電壓;
    • 上面保護二極管接VDD(3.3V),下面二極管接VSS(0V);
    • 當輸入電壓高于3.3V時,上方二極管導通,輸入電壓產生的電流就會直接流入VDD而不會流入內部電路,避免過高的電壓對內部電路產生傷害;
    • 當輸入電壓低于0V時,下方二極管導通,電流會直接從IO引腳流出去,而不會從內部電路汲取電流,從而保護內部電路;
    • 當輸入電壓位于0~3.3V之間,上下方二極管均不會導通;
  • 上下拉電阻
    • 上下拉電阻的作用是給輸入提供一個默認的輸入電平,上下拉電阻均斷開時,引腳處于浮空狀態,此時引腳的輸入電平極易受到外界干擾而改變;
    • 上拉電阻連接VDD(3.3V);下方電阻連接VSS(0V);連接開關可通過程序進行配置;
    • 上拉電阻打開,下拉電阻斷開,即上拉輸入模式,又稱作默認為高電平的輸入模式;
    • 上拉電阻斷開,下拉電阻打開,即下拉輸入模式,又稱作默認為低電平的輸入模式;
    • 上拉電阻和下拉電阻均斷開,即浮空輸入模式;
    • 上下拉電阻的阻值都是比較大的,是一種弱上拉和弱下拉,目的是盡量不影響正常的輸入操作;
  • 施密特觸發器:對輸入電壓進行整形
    • 當施密特觸發器的輸入電壓大于某一閾值時,輸出就會瞬間升為高電平;小于某一閾值,輸出就會瞬間降為低電平;
    • 例如:引腳的波形為外界輸入,雖然是數字信號,但實際情況下可能產生各種失真,一下面波形舉例:
      在這里插入圖片描述
  • 數據選擇器:選擇是輸出數據寄存器還是片上外設(復用功能輸出)的信號輸入到輸出控制;
    • 位設置/清除寄存器:用來單獨操作輸出數據寄存器的某一位,而不影響其他位(即單獨操作GPIO中某一引腳的電平高低,輸出寄存器同時控制GPIO的16個端口,且只能整體讀寫 )
  • MOS管:MOS管可以理解成電子開關,輸出控制的信號控制開關的導通和關閉,進而控制IO口連接到VDD(3.3V)或VSS(0V);可選擇推挽、開漏、關閉三種輸出模式
    • 推挽輸出模式:P-MOS和N-MOS均有效;這種模式下,高低電平均有較強的驅動能力,所以推挽輸出模式也稱為強推輸出模式;在推挽輸出模式下,STM32對IO口具有絕對的控制權,高低電平都有STM32控制;
      • 輸出控制輸出1時,P-MOS導通,N-MOS斷開,輸出直接接到VDD(3.3V),輸出高電平;
      • 輸出控制輸出0時,P-MOS斷開,N-MOS導通,輸出直接接到VSS(0V),輸出低電平;
    • 開漏輸出模式:P-MOS無效,N-MOS有效;這種模式下,只有低電平有驅動能力,高電平沒有驅動能力;開漏模式常用作通信協議的輸出方式,比如I2C通信的引腳;在多機通信的情況下,開漏模式可以避免各個設備的相互干擾;
      • 輸出控制輸出1時,P-MOS斷開,N-MOS斷開,輸出相當于斷開,即高阻模式;
      • 輸出控制輸出0時,P-MOS斷開,N-MOS導通,輸出直接接到VSS(0V),輸出低電平;
      • 開漏模式還可以用于輸出5V的電平信號:在IO口外接一個上拉電阻到5V的電源,輸出低電平時,由內部的N-MOS直接接VSS(0V);輸出高電平時,由外部上拉電阻拉高至5V;這樣就可以輸出5V信號,用于兼容一些5V的電平設備;
    • 關閉模式:當引腳配置為輸入模式時,P-MOS和N-MOS均無效,端口的電平由外部信號來控制;

三、GPIO的8種工作模式

在這里插入圖片描述

  • 上拉/下拉/浮空輸入配置
    在這里插入圖片描述
  • 模擬輸入配置
    在這里插入圖片描述
  • 推挽/開漏輸出配置
    在這里插入圖片描述
  • 復用推挽/開漏輸出配置
    在這里插入圖片描述
  • 在輸出模式下,輸入都是有效的;在輸入模式下,輸出都是無效的;(因為一個端口只能有一個輸出,但可以有多個輸入);
  • 在GPIO的8種模式下,除了模擬輸入模式會關閉數字輸入功能,其他7種模式下,數字輸入都是有效的;

四、參考手冊_GPIO部分介紹

  • STM32F103數據手冊和參考手冊 藍奏云下載鏈接,密碼:2nkx
    在這里插入圖片描述

  • 端口配置寄存器
    在這里插入圖片描述

    • 每一個端口的模式由4位進行配置, 16個端口就需要64位,每個寄存器32位,所以配置寄存器有2個;
    • GPIO的輸出速度可以限制輸出引腳的最大翻轉速度,該設計是為了低功耗和穩定性,一般要求不高時,配置成50MHz即可;
  • 端口輸入寄存器
    在這里插入圖片描述

    • 低16位對應16個引腳,高16位沒有使用;
  • 端口輸出寄存器
    在這里插入圖片描述

    • 低16位對應16個引腳,高16位沒有使用;
  • 端口位設置/清除寄存器
    在這里插入圖片描述

    • 高16位用于位清除,低16位用于位設置; 寫1用于設置或清除,寫0不產生影響;
  • 端口位清除寄存器
    在這里插入圖片描述

    • 低16位效果和端口位設置/清除寄存器的高16位功能一樣;
    • 當只需要單一的進行位設置或位清除,位設置時,用端口位設置/清除寄存器;位清除時,用端口位清除寄存器;(此時進行位設置和位清除時,使用的都是低16位的數據,比較方便);
    • 當需要對多個端口同時進行位設置和位清除,可以使用端口設置/清除寄存器,這樣可以保證位設置和位清除的同步性;

五、GPIO輸出實驗_外圍設備介紹

1.LED和蜂鳴器

(1)LED和蜂鳴器簡介

  • LED,發光二極管,正向通電點亮,反向通電不亮;
    在這里插入圖片描述
  • 蜂鳴器:分為有源蜂鳴器和無源蜂鳴器
    • 有源蜂鳴器:內部自帶震蕩源,正負極接上直流電壓即可持續發聲,頻率固定;
      在這里插入圖片描述

    • 無源蜂鳴器:內部不帶震蕩源,需要控制器提供震蕩脈沖才可發聲;調整提供的震蕩脈沖的頻率,可發出不同頻率的聲音;

(2)LED和蜂鳴器硬件電路

在這里插入圖片描述

  • STM32的GPIO在推挽輸出模式下,高低電平具有比較強的驅動能力,選用高電平驅動或者低電平驅動均可;
  • 單片機電路種,一般傾向于低電平驅動,因為很多單片機或芯片,都是用了高電平弱驅動,低電平強驅動的規則(這樣可以一定程度上避免高低電平沖突);

2.面包板

在這里插入圖片描述
在這里插入圖片描述

六、GPIO輸出實驗

1.LED閃爍

  • 接線圖
    在這里插入圖片描述

  • 操作STM32的GPIO外設一共需要3個步驟:

    • 使用RCC(Reset Clock Control,復位時鐘控制),開啟GPIO的時鐘;
    • 使用GPIO_Init()函數初始化GPIO;
    • 使用輸出或輸入函數控制GPIO口;
  • RCC外設常用的3個庫函數
    在這里插入圖片描述
    在這里插入圖片描述

  • GPIO常用的庫函數:GPIO_Init、GPIO的8個讀寫函數
    在這里插入圖片描述

    • GPIO的4個輸出函數
      在這里插入圖片描述
  • Delay延時函數

    • Delay.c
    #include "stm32f10x.h"/*** @brief  微秒級延時* @param  xus 延時時長,范圍:0~233015* @retval 無*/
    void Delay_us(uint32_t xus)
    {SysTick->LOAD = 72 * xus;				//設置定時器重裝值SysTick->VAL = 0x00;					//清空當前計數值SysTick->CTRL = 0x00000005;				//設置時鐘源為HCLK,啟動定時器while(!(SysTick->CTRL & 0x00010000));	//等待計數到0SysTick->CTRL = 0x00000004;				//關閉定時器
    }/*** @brief  毫秒級延時* @param  xms 延時時長,范圍:0~4294967295* @retval 無*/
    void Delay_ms(uint32_t xms)
    {while(xms--){Delay_us(1000);}
    }/*** @brief  秒級延時* @param  xs 延時時長,范圍:0~4294967295* @retval 無*/
    void Delay_s(uint32_t xs)
    {while(xs--){Delay_ms(1000);}
    } 
    • Delay.h
    #ifndef __DELAY_H
    #define __DELAY_Hvoid Delay_us(uint32_t us);
    void Delay_ms(uint32_t ms);
    void Delay_s(uint32_t s);#endif
  • main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"int main(void)
{//1.打開GPIOA時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);		//2.配置PA0為推挽輸出GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);while(1){GPIO_ResetBits(GPIOA, GPIO_Pin_0);		// 打開LEDDelay_ms(500);GPIO_SetBits(GPIOA, GPIO_Pin_0);		// 關閉LEDDelay_ms(500);}}
  • LED閃爍實驗,工程下載地址,密碼:gso9

2.LED流水燈

  • 接線圖
    在這里插入圖片描述
  • main.c
#include "stm32f10x.h"                  // Device header
#include "Delay.h"int main(void)
{//1.打開GPIOA時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);		//2.配置PA0-PA7為推挽輸出GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);while(1){GPIO_Write(GPIOA, ~0x0001);Delay_ms(500);GPIO_Write(GPIOA, ~0x0002);Delay_ms(500);GPIO_Write(GPIOA, ~0x0004);Delay_ms(500);GPIO_Write(GPIOA, ~0x0008);Delay_ms(500);GPIO_Write(GPIOA, ~0x0010);Delay_ms(500);GPIO_Write(GPIOA, ~0x0020);Delay_ms(500);GPIO_Write(GPIOA, ~0x0040);Delay_ms(500);GPIO_Write(GPIOA, ~0x0080);Delay_ms(500);}}
  • LED流水燈實驗,工程下載地址,密碼:1vmb

3.蜂鳴器

  • 接線圖
    在這里插入圖片描述
  • main.c
#include "stm32f10x.h"                  // Device header
#include "Delay.h"int main(void)
{//1.打開GPIOB時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);		//2.配置PA0-PA7為推挽輸出GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);while(1){GPIO_ResetBits(GPIOB, GPIO_Pin_12);Delay_ms(100);GPIO_SetBits(GPIOB, GPIO_Pin_12);Delay_ms(100);GPIO_ResetBits(GPIOB, GPIO_Pin_12);Delay_ms(100);GPIO_SetBits(GPIOB, GPIO_Pin_12);Delay_ms(700);}}
  • 蜂鳴器實驗,工程下載地址,密碼:a1zp

4.庫函數的使用方法

  • 打開對應外設庫函數種的.h文件,查看有哪些函數------>轉到對應函數的定義,查看函數功能和參數的用法;
  • 庫函數使用手冊(老版本,部分用法有出入,整體差異不大)下載鏈接
  • 網上搜索,參考別人的代碼;

七、GPIO輸入實驗_外圍設備介紹

1.按鍵

  • 常用的輸入設備,按下導通,松開斷開;
  • 按鍵抖動:按鍵內部使用的是機械式彈簧片來進行通斷,在按下和松手的瞬間會伴有一連串的抖動;
    • 按鍵的抖動時間比較短,通常在5~10ms,人眼是分辨不出來的,但是對于高速運行的單片機而言,5 ~ 10ms還是很漫長的,所以需要對抖動進行過濾,即按鍵消抖;
    • 最簡單的過濾辦法就是加一段延時,把抖動時間耗過去;
      在這里插入圖片描述
  • 按鍵的電路
    在這里插入圖片描述

2.傳感器模塊

  • 課程中有4個傳感器模塊:光敏電阻傳感器、熱敏電阻傳感器、對射式紅外傳感器、反射式紅外傳感器;
  • 這些傳感器模塊都是利用傳感器元件(光敏電阻/熱敏電阻/紅外接收管)的電阻會隨著外界的模擬量變化而變化(光線越強,光敏電阻阻值越小;溫度越高,熱敏電阻阻值越小;紅外光線越強,紅外接收管的阻值越小;)
    • 電阻的變化不容易采集到,通常將傳感器元件與定值電阻進行串聯分壓,這樣就可以得到模擬電壓的輸出。對于電路來說,檢測電壓就比較容易;
    • 還可以通過電壓比較器,對輸出的模擬電壓進行二值化,這樣就可以得到數字電壓輸出;
      在這里插入圖片描述
  • 傳感器的電路
    在這里插入圖片描述

八、GPIO輸入實驗

1. 按鍵控制LED

  • 接線圖
    在這里插入圖片描述
  • 讀取引腳和端口的庫函數
    在這里插入圖片描述
  • LED.c
#include "stm32f10x.h"                  // Device headervoid LED_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2);
}void LED1_ON(void)
{GPIO_ResetBits(GPIOA, GPIO_Pin_1);
}void LED1_OFF(void)
{GPIO_SetBits(GPIOA, GPIO_Pin_1);
}void LED1_Turn(void)
{if(GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_1) == 0){GPIO_SetBits(GPIOA, GPIO_Pin_1);}else{GPIO_ResetBits(GPIOA, GPIO_Pin_1);}
}void LED2_ON(void)
{GPIO_ResetBits(GPIOA, GPIO_Pin_2);
}void LED2_OFF(void)
{GPIO_SetBits(GPIOA, GPIO_Pin_2);
}void LED2_Turn(void)
{if(GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_2) == 0){GPIO_SetBits(GPIOA, GPIO_Pin_2);}else{GPIO_ResetBits(GPIOA, GPIO_Pin_2);}
}
  • LED.h
#ifndef __LED_H
#define __LED_Hvoid LED_Init(void);void LED1_ON(void);
void LED1_OFF(void);
void LED1_Turn(void);
void LED2_ON(void);
void LED2_OFF(void);
void LED2_Turn(void);#endif
  • Key.c
#include "stm32f10x.h"                  // Device header
#include "Delay.h"void Key_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_11;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);
}uint8_t Ket_GetNum(void)
{uint8_t KeyNum = 0;if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0)				// 按鍵1按下{	Delay_ms(20);																					// 消抖while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0);	// 等待抬起Delay_ms(20);																					// 消抖KeyNum = 1;																						// 按鍵1按下后松開}if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) == 0)				// 按鍵2按下{	Delay_ms(20);																						// 消抖while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) == 0);	// 等待抬起Delay_ms(20);																						// 消抖KeyNum = 2;																							// 按鍵2按下后松開}return KeyNum;
}
  • Key.h
#ifndef __KEY_H
#define __KEY_H
#include "stm32f10x.h"                  // Device headervoid Key_Init(void);
uint8_t Ket_GetNum(void);	#endif
  • 按鍵控制LED實驗,工程下載地址,密碼:2pzm

2.光敏傳感器控制蜂鳴器

  • 接線圖
    在這里插入圖片描述
  • Buzzer.c
#include "stm32f10x.h"                  // Device headervoid Buzzer_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_12);
}void Buzzer_ON(void)
{GPIO_ResetBits(GPIOB, GPIO_Pin_12);
}void Buzzer_OFF(void)
{GPIO_SetBits(GPIOB, GPIO_Pin_12);
}void Buzzer_Turn(void)
{if(GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_12) == 0){GPIO_SetBits(GPIOB, GPIO_Pin_12);}else{GPIO_ResetBits(GPIOB, GPIO_Pin_12);}
}
  • Buzzer.h
#ifndef __BUZZER_H
#define __BUZZER_Hvoid Buzzer_Init(void);
void Buzzer_ON(void);
void Buzzer_OFF(void);
void Buzzer_Turn(void);#endif
  • LightSensor.c
#include "stm32f10x.h"                  // Device headervoid LightSeneorInit(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;				// 光敏傳感器,光照強時,輸出低電平,輸出指示燈亮;光照弱時,輸出高電平,輸出指示燈滅;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_13);
}uint8_t LightSensor_Get(void)
{return GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13);
}
  • LightSensor.h
#ifndef __LightSensor_H
#define __LightSensor_H
#include "stm32f10x.h"                  // Device headervoid LightSeneorInit(void);
uint8_t LightSensor_Get(void);#endif
  • main.c
#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "Buzzer.h"
#include "LightSensor.h"int main(void)
{Buzzer_Init();LightSeneorInit();while(1){if(LightSensor_Get() == 1){Buzzer_ON();}else{Buzzer_OFF();}}}
  • 光敏傳感器控制蜂鳴器,工程下載地址,密碼:bh7h

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74448.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74448.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74448.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java實戰報錯

哪錯了 Preview 在這段Java代碼中,map.put("Cc", 20); 這一行的鍵 "Cc" 被標記為錯誤。這可能是由于以下幾種原因: 鍵值類型不匹配:雖然在你的代碼中沒有顯示出來,但確保 HashMap 的鍵是 String 類型&#xf…

25大唐杯賽道一本科B組知識點大綱(下)

5G/6G網絡技術知識點(10%) 工程概論及通信工程項目實踐(20%) 5G垂直行業應用知識點(20%) ???為重點知識,盡量要過一遍哦 大唐杯賽道一國一備賽思路 大唐杯國一省賽回憶錄--有付出就會有收…

docker的文件系統Overlay2

OverlayFS(Overlay2)文件系統深度解析 Overlay2 是 Docker 默認使用的聯合文件系統(Union Filesystem),用于管理容器鏡像的分層存儲和容器運行時文件系統的合并。它基于 Linux 內核的 OverlayFS 技術,是早…

WebRTC技術簡介及應用場景

寫在前面 本文是參考稀土掘金的文章,整理得出,版權歸原作者所有! 參考鏈接:https://juejin.cn/book/7168418382318927880/section/7171376753263247396 WebRTC(Web Real-Time Communication) 是一項開源技術,允許瀏覽器和移動應用直接進行…

Windows 圖形顯示驅動開發-WDDM 2.1 功能(四)

驅動程序版本控制 圖形適配器或芯片集的驅動程序 DLL 和 SYS 文件必須具有正確格式的文件版本。 驅動程序信息文件 (.inf)、內核模式驅動程序 (.sys) 和用戶模式驅動程序 (.dll) 文件的版本信息必須一致。 此外,.inf 的 [SignatureAttributes] 部分中標識為 PETru…

什么是 StarRocks?核心優勢與適用場景解析

在數據量持續爆發的時代,企業對實時分析的需求日益迫切。例如,電商大促期間的交易監控、廣告投放效果的即時反饋等場景,均要求毫秒級的響應速度。然而,傳統工具如 Hadoop、Hive 等存在明顯短板:復雜查詢性能不足、資源…

Java基礎 4.3

1.對象機制練習 public class Object03 {public static void main(String[] args) {Person a new Person();a.age 10;a.name "小明";Person b;b a;System.out.println(b.name);//小明b.age 200;b null;System.out.println(a.age);//200System.out.println(b.a…

視頻設備軌跡回放平臺EasyCVR綜合智能化,搭建運動場體育賽事直播方案

一、背景 隨著5G技術的發展,體育賽事直播迎來了新的高峰。無論是NBA、西甲、英超、德甲、意甲、中超還是CBA等熱門賽事,都是值得記錄和回放的精彩瞬間。對于體育迷來說,選擇觀看的平臺眾多,但是作為運營者,搭建一套體…

搬磚--貪心+排序的背包

a在上面b在下面->a.v-M-b.m>b.v-M-a.m->剩余率大 所以我先遍歷a&#xff0c;讓a在上面 這就是要考慮貪心排序的01背包 因為它有放的限制條件 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int>…

《2024年全球DDoS攻擊態勢分析》

從攻擊態勢來看&#xff0c;2024年DDoS攻擊頻次繼續呈增長趨勢&#xff0c;2024年同步增加1.3倍&#xff1b;超大規模攻擊激增&#xff0c;超800Gbps同比增長3.1倍&#xff0c;累計高達771次&#xff0c;且互聯網史上最大帶寬和最大包速率攻擊均被刷新&#xff1b;瞬時泛洪攻擊…

數據分析參考架構詳解

1.數倉方法論 2. 數倉建模參考架構 3.大數據參考架構 4.數據分析參考架構

領馭科技:以微軟Azure Speech技術為核心,驅動翻譯耳機新時代

在全球化的今天&#xff0c;語言不再是溝通的障礙。領馭科技&#xff0c;作為微軟的核心合作伙伴&#xff0c;正引領翻譯耳機行業進入一個全新的發展階段。以時空壺與貿人為例&#xff0c;這兩家公司的翻譯耳機產品憑借其內置的微軟Azure Speech人工智能語音技術&#xff0c;為…

seaweedfs分布式文件系統

seaweedfs https://github.com/seaweedfs/seaweedfs.git go mod tidy go -o bin ./… seaweed占不支持smb服務&#xff0c;只能用fuse的方式mount到本地文件系統 weed master 默認端口&#xff1a;9333&#xff0c;支持瀏覽器訪問 weed volume 默認端口&#xff1a;8080 weed …

說清楚單元測試

在團隊中推行單元測試的時候,總是會被成員問一些問題: 這種測試無法測試數據庫的SQL(或者是ORM)是否執行正確?這種測試好像沒什么作用?關聯的對象要怎么處理呢?…借由本篇,來全面看一看單元測試。 單元測試是軟件開發中一種重要的測試方法,其核心目的是驗證代碼的最小…

服務器磁盤io性能監控和優化

服務器磁盤io性能監控和優化 全文-服務器磁盤io性能監控和優化 全文大綱 磁盤IO性能評價指標 IOPS&#xff1a;每秒IO請求次數&#xff0c;包括讀和寫吞吐量&#xff1a;每秒IO流量&#xff0c;包括讀和寫 磁盤IO性能監控工具 iostat&#xff1a;監控各磁盤IO性能&#xff0c…

辦公設備管理系統(springboot+ssm+jsp+maven)

基于springboot的辦公設備管理系統(springbootssmjspmaven) 系統功能主要有&#xff1a; 歡迎頁賬號管理 管理員賬號管理系統賬號添加密碼修改 普通管理員管理 用戶管理用戶添加用戶查詢 資產類型管理資產信息管理資產檔案管理資產報表

【STM32設計】基于STM32的智能門禁管理系統(指紋+密碼+刷卡+蜂鳴器報警)(代碼+資料+論文)

本課題為基于單片機的智能門禁系統&#xff0c;整個系統由AS608指紋識別模塊&#xff0c;矩陣鍵盤&#xff0c;STM32F103單片機&#xff0c;OLED液晶&#xff0c;RFID識別模塊&#xff0c;繼電器&#xff0c;蜂鳴器等構成&#xff0c;在使用時&#xff0c;用戶可以錄入新的指紋…

Java學習總結-io流-字節流

io的體系&#xff1a; FlieInputStream(文件字節輸入流) 是什么&#xff1a;磁盤以字節的形式輸入到內存中。 由于不同格式編碼長度&#xff0c;每次讀取一個或幾個字節&#xff0c;都有可能出現亂碼。 所以官方提供了&#xff0c;一次性讀入全部字節&#xff0c;以數組的形式…

玩轉JUC - 如何優雅的異步處理任務

1、概述 前面我們學習了并發包中的一些核心的基礎類&#xff0c;包括原子類、Lock 、以及線程間通信的一些工具類&#xff0c;相信你已經能夠正確的處理線程同步的問題了&#xff0c;今天我們繼續學習并發包下的工具類&#xff0c;我們本次主要學習線程池和異步計算框架相關的內…

MINIQMT學習課程Day2

如何和聚寬進行綁定交易 目前市場上的方式主要為以下三種方案&#xff1a; 1.聚寬和一創直接綁定&#xff08;現在已經被廢除&#xff09; 2.通過蔣老師所提出的redis方案&#xff0c;進行交易 3.李興果的&#xff0c;網頁發送到服務器數據庫&#xff0c;然后本地讀取數據進行…