STM32 基本GPIO控制

目錄

GPIO基礎知識

?編輯IO八種工作模式

固件庫實現LED點燈

蜂鳴器

按鍵基礎知識

?編輯繼電器

震動傳感器?

433M無線模塊?

GPIO基礎知識

GPIO(General-Purpose input/output,通用輸入/輸出接口)

用于感知外部信號(輸入模式)和控制外部設備(輸出模式)

?簡單模塊:LED,按鍵,蜂鳴器,溫度傳感器,使用一個GPIO就可以完成數據的傳輸/ 控制

復雜一點的模塊OLED,FLASH,六軸傳感器需要多個引腳組成“協議”傳輸數據, USART,IIC,SPI等協議 ?

?MCU單片機大都采用引腳復用模式也就是一個GPIO,可以直接控制它輸出高低電平,也可以設置為某個協議的引腳之一。此外,一些MCU的引腳,還能設置為ADC模式讀取模擬信號,或者設置為DAC模式輸出模擬信號

系統架構

IO八種工作模式

?引腳電平:0V~3.3V(數據1就是高電平就是3.3V,數據0就是低電平就是0V),部分引腳可忍受5V?

STM32 IO工作模式

輸出模式有四種:推挽輸出,開漏輸出,復用開漏,復用推挽

輸入模式有四種:上拉輸入,下拉輸入,浮空輸入,模擬輸入

輸出模式:

1.推挽輸出(Push-Pull,pp)

讓輸出控制變成了VDD/VSS輸出,使得輸出電流增大 提高了輸出引腳的驅動能力,提高了電路的負載能力和開關的動作速度

數據寄存器為1時,下管斷開,上管導通,輸出直接接到VDD,輸出高電平

數據寄存器為0時,上管斷開,下管導通,輸出直接接到VSS,輸出低電平

?2.開漏輸出(Open-Drain,OD)

推挽輸出模式可以直接輸出高電平,開漏輸出需要外接上拉電阻才能輸出高電平(5v)

數據寄存器為1時,下管斷開,上管斷開,高阻模式

數據寄存器為0時,上管斷開,下管導通,輸出直接接到VSS,輸出低電平

這種模式下只有低電平有驅動能力,高電平是沒有驅動能力的

可以作為通信協議的驅動方式,在多機通信的情況下,這個模式可以避免各個設備的相互干擾

?開漏輸出的特性

????????利用外部電路驅動能力

????????實現電平轉換

????????方便實現“邏輯與” 功能

3.復用推挽/開漏輸出(Alternate Funtion,AF)

GPIO除了作為通用輸入輸出引腳使用以外,還可以作為片上外設(USART,IIC,SPI) 專用引腳(和其他輸出輸入的區別),既可以利用片上外設輸入也可以用來輸出,即一個引腳可以有多種用途,但是同一時刻一個引腳只能使用復用功能中 的一個

當引腳設置為復用功能的時候,可選擇推挽復用模式或者復用開漏模式,在設置為復用開 漏模式時,需要外接上拉電阻。

輸入模式:

1.上拉輸入(Input Pull-up)

如果接入上拉電阻,當引腳懸空時,還有上拉電阻來保證引腳的高電平? ?

VDD經過開關、上拉電阻,連接外部I/O引腳。當開關閉合時,外部I/O輸入信號時,默認 輸入高電平。 ?

2.下拉輸入(Input Pull-down)

VSS經過開關,下拉電阻,連接外部I/O引腳,當開關閉合時,外部I/O無輸入信號 時,默認輸入低電平?

?3.浮空輸入(Floating Input)

兩個上下拉電阻開關均斷開,沒有上拉也沒有下拉,I/O引腳直接連接TTL肖特基觸發器(對輸入電壓進行整形,如果輸入電壓大于某一閾值,輸出就會瞬間升為高電平,如果輸入電壓小于某一閾值,輸出就會瞬間降為低電平?)

此時,I/O引腳浮空,讀取的電平是不確定的,外部信號是什么電平,MCU引腳就輸 入什么電平

MCU復位上電后,默認為浮空輸入模式 ?

4.模擬輸入(Analoge mode) ?

兩個上下拉電阻開關均斷開,同事TTL肖特基觸發器也斷開,引腳信號直接連接模擬輸入,實現對外部信號的采集。 ?

?在輸入模式下輸出是無效的,在輸出模式下輸入都是有效的,因為一個端口只能有一個輸出,但可以有多個輸入

當使用外設配置GPIO時可以參考手冊給配置

固件庫實現LED點燈

1.LED燈

LED燈,是一種能夠將電能轉化為可見光的半導體器件

原理:當給P極施加正向電壓時,空穴和自由電子在P-N結復合,輻射出光子而發 光。?

2.控制LED燈

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

LED燈的正極接到了3.3V,LED燈的負極接到了PA1,也就是GPIOA1引腳 只需要控制PA1為相對應的低電平,即可點亮對飲的LED燈,輸出高電平則熄滅對應的LED 燈。 ?

(在這種電路連接中,當 LED 燈的正極接到 3.3V 電源時,它為 LED 提供了正向的電壓偏置,使得 LED 具備了導通發光的條件之一。而 LED 的負極連接到 PA1(GPIOA1 引腳),GPIOA1 引腳可以通過軟件編程來控制其輸出電平。

當 PA1 引腳輸出低電平時,此時 LED 燈的正負極之間形成了足夠的電壓差(3.3V - 低電平電壓,通常低電平電壓接近 0V),有電流從 3.3V 電源經過 LED 流向 PA1 引腳,從而使 LED 燈導通發光。

當 PA1 引腳輸出高電平時,假設高電平為 3.3V,那么 LED 燈正負極之間的電壓差為 0(或非常小),無法滿足 LED 導通所需的電壓條件,LED 燈中沒有電流通過,所以 LED 燈熄滅。

這種通過控制 GPIO 引腳電平來控制 LED 燈亮滅的方式是一種常見的數字邏輯控制方法,方便且易于通過軟件進行靈活的控制和管理,廣泛應用于各種電子設備和電路設計中。)

軟件設計流程

?初始化系統

????????初始化GPIO外設時鐘

????????初始化LED引腳(對于單片機來說是輸出)

(首先得定義這個變量才能用這個變量,用函數把它們裝起來)

輸出電平

首先在User中建立LED文件,LED:中新建led.h和led.c文件

從project中打開keil5,雙擊User將led.c添加進去,點擊魔術棒led.h文件加進去,雙擊led.c文件輸入#include "led.h",因為我們要用庫函數要包含庫函數頭文件#include "stm32f10x.h"

1.初始化LED燈的函數(先將函數寫進led.h文件中)命名函數時用駝峰命名發

1.1初始化LED引腳GPIOA1,要用初始化的GPIO結構體,通過配置結構體我們可以初始化引腳

先在FWLIB中找到giop.c文件再找到giop.h庫在里面找到GIOP結構體GPIO_InitTypeDef,在led.c中重新定義GIOP結構體,在重新配置引腳,因為LED燈連接到板子上PA1所以引腳配置的是pin_1,要想LED燈點亮需要輸出低電平,所以配置的模式是推挽輸出

再從giop.c文件再找到giop.h中找到GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);函數,這個函數的作用是初始化GIOP的結構體,把上面函數真正初始化到結構體里面去,第一個參數是GPIOA,第二個參數是&led_initstruct(右鍵參數,上面是跳轉定義.c,下面是跳轉聲明.h)

1.2初始化時鐘APB2下的GPIOA

FWLIB中找到rcc.c文件再找到rcc.h找到RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);函數,第一個參數是APB2下的哪一個外設,第二個參數是枚舉類型兩種狀態,失能和使能

最后總代碼要做main文件中運行,在main文件中寫入#include "led.h"就包含了上面的所有函數

在main函數中首先輸入初始化LED燈的函數,然后讓LED燈輸出低電平

?while(1)
? ? {
?? ?GPIO_ResetBits(GPIOA,GPIO_Pin_1);//這個函數是輸出低電平
? ? //右鍵查看函數聲明,第一個參數是GPIOA,第二個參數引腳1

????GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//這個函數是輸出高電平
?? ? }

如何控制LED燈的閃爍??(亮一秒關一秒:延時)

//軟件延時主要是讓CPU“空轉”,通過計算不同指令周期的時間,參考CPU主頻大小,大概算出延時時間,這種方法從表面看起來就不精確,但它是比較好實現;
void delay(uint16_t time)//延時1ms
{uint16_t i = 0;while(time --){i - 12000;while(i --);}}

蜂鳴器

1.蜂鳴器的種類

蜂鳴器是一種常用的電子發聲元器件,采用直流電壓供電。廣泛應用于計算機,打印 機,報警器,電子玩具,汽車電子設備燈等產品中常見的蜂鳴器可分為有源蜂鳴器和 無源蜂鳴器。

?2.蜂鳴器的控制方式

有源蜂鳴器:內部有震蕩源,只要通電即可自動發出固定頻率的聲音。(頻率固定無 法控制音色)

無源蜂鳴器:內部無震蕩源,需要外部脈沖信號驅動發聲,聲音頻率可變。(可改變 頻率來改變音色)

3.區分蜂鳴器

從外觀上來看兩種蜂鳴器形狀相似,有源蜂鳴器底部有黑膠密封。

無源蜂鳴器底部可以看到電路板,兩種蜂鳴器都標注有正負極。 ?

GPIO控制蜂鳴器?

VCC通過杜邦線接到板子3.3V,GND接到板子GND,I/O口接到普通單片機I/O口即可,當I/O口往蜂鳴器輸出低電平時,蜂鳴器就會叫,如果輸出高電平就會關掉

軟件設計流程(和LED燈類似)

????????初始化系統

????????????????初始化GPIO外設時鐘GPIOA

????????????????初始化蜂鳴器的引腳A3

????????輸出電平控制蜂鳴器 ?

初始化和LED燈一樣

?輸出電平控制蜂鳴器 ?

按鍵基礎知識

GPIO的特點: 具有內部上拉或下拉的功能 可以使用外部下拉或上拉

按鍵連接示意圖:

沒按下開關的時候PC13和PA0都是沒有連接外部電平的(默認電平),當按鍵按下的時候會出入GND低電平,所有我們可以判斷如果檢測PA0是低電平說明按鍵按下則我們控制燈亮,如果PC13引腳檢測到的電平是低電平,我們就可以判斷這個按鍵按下,則就把燈關掉

按鍵控制LED燈

軟件設計流程

? ? ? ? 初始化系統

? ? ? ? ? ? ? ? 初始化GPIO時鐘

? ? ? ? ? ? ? ? 初始化按鍵和LED引腳

? ? ? ? 檢測按鍵輸入電平來控制LED燈

? ? ? ? ? ? ? ? SW2控制燈開(PA0)

? ? ? ? ? ? ? ? SW3控制燈關(PC13)

初始化系統

?檢測按鍵輸入電平來控制LED燈

繼電器

1.繼電器的工作原理
繼電器是一個電控開關,工作原理基于電磁感應,繼電器包括一個電磁線圈和一組觸點。常用于控制高電流或高電壓的電路,例如自動控制原理,電力系統和自動化設備中,由于可靠性和電氣隔離的特性可以實現小電流實現大電流,繼電器在各種應用中都有廣泛的用途。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

2.繼電器的引腳說明
1.VCC(+):供電正極,連接此引腳到電源,以提供繼電器所需的電流

2.GND(-): 地,連接此引腳到電源的負極或者地。

3.IN:控制輸入信號,通常用于連接控制信號,當該信號變化,繼電器切換狀態。

(IN如果接了低電平,這個繼電器是連接的狀態(閉合)IN如果接了高電平,就是斷開的狀態)

IN不管是高電平還是低電平,控制的是NO端和NC端

4.COM(common):公共端,通常是中間的觸點,與常開或常閉觸點相連

5.NO(Normally Open):常開接口,繼電器吸合前懸空,吸合后于COM連接

6.NC(Normally Closed):常閉接口,繼電器吸合前與COM連接,吸合后懸空

(測試手中繼電器是5v還是3.3v:首先用杜邦線連接VCC和GND另一端接到板子上的5V和GND此時紅燈亮了,如果IN口接到低電平(3.3v高電平)綠燈會亮,說明繼電器不是5V不是他的工作電壓,再重新用杜邦線連接VCC和GND另一端接到板子上的3.3V和GND此時紅燈亮了,如果IN口接到低電平綠燈會亮,再重新接到3.3v說明繼電器是3.3V是他的工作電壓,并且是低電平導通)

初始化系統

????????初始化繼電器IN引腳對應的GPIO外設時鐘

????????初始化繼電器IN的引腳輸出模式(IN獲得低電平就打開,IN獲得高電平就斷開,所以IN連接單片機,單片機要輸出引腳高或者低,所以是輸出模式)

輸出電平控制繼電器開和關

?輸出電平控制繼電器開和關

震動傳感器?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

1.震動傳感器工作原理

震動傳感器黑色震動檢測傳感器,工作時電源LED燈常量(說明這個模塊左右兩邊都有LED燈,

左邊是電源指示燈,另外的信號燈只有在震動的瞬間才會亮),震動信號檢測LED燈發生震動的

時候會

保持亮的過程。正常工作模塊DO口輸出高電平,震動瞬間DO口輸出低電平,用于各種震動觸發作

用,防盜報警,智能小車,電子積木燈等。

中間有個旋鈕是控制震動傳感器的靈敏度

2.震動傳感器硬件引腳接線

1.VCC:接到板子電源的5V或者3.3V。

2.GND:地,連接到板子電源的負極或者GND.

3.DO: 數字信號輸出口,可以與單片機相連檢測環境是否發生震動。(如果這個震動傳感器震動了,它就會把這個信號通過DO口發生給單片機,對于單片機來說它是輸入的,所以再編程是要以輸入IO的狀態)

3震動傳感器軟件開發流程

? ? ? ? 初始化系統

? ? ? ? ? ? ? ? 初始化震動傳感器DO相連的單片機引腳時鐘

? ? ? ? ? ? ? ? 初始化震動傳感器DO相連的單片機引腳輸入配置

? ? ? ? 檢測震動控制LED燈

#include "stm32f10x.h"
#include "shake.h"void Shake_Init()
{GPIO_InitTypeDef GPIOInitstruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIOInitstruct.GPIO_Pin = GPIO_Pin_0;GPIOInitstruct.GPIO_Mode = GPIO_Mode_IPD;
//上拉輸入還是下拉輸入都不影響,最終還是以輸入電平為主
//配置上拉相當于 int a = 1,下拉相反GPIO_Init(GPIOA, &GPIOInitstruct);}

正常沒有震動時輸出高電平,有震動的時候輸出低電平,如果DO口接受到低電平就控制板子上A1這個燈亮

#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"
#include "relay.h"
#include "shake.h"void delay(uint16_t time){uint16_t i = 0;while(time --){i = 12000;while(i--);}}int  main()
{Shake_Init();Led_Init();while(1){if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0)
//如果單片機引腳PA0接受到低電平(震動傳感器震動),就會控制A1燈亮一秒滅一秒{	GPIO_ResetBits(GPIOA, GPIO_Pin_1);delay(1000);GPIO_SetBits(GPIOA, GPIO_Pin_1);delay(1000);}else
//如果沒有接受到低電平,就會熄滅{GPIO_SetBits(GPIOA, GPIO_Pin_1);}}}

小項目:震動感應燈

?繼電器的作用是,如果開的情況下就會把COM和NO端連接在一起,就相當于LED燈直接和單片機的VCC相連接的,這時燈就會亮,如果是關的情況下COM和NO就不會連接在一起,LED燈就是滅的狀態

如果震動器震動則控制繼電器開?,繼電器開就表示COM和NO連接在一起,LED就會亮

?

#include "relay.h"
#include "stm32f10x.h"void Relay_Init()
{GPIO_InitTypeDef GPIOInitstruct;//初始化引腳的位置取決于IN引腳的接線,這時我們接到板子上PA0引腳
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIOInitstruct.GPIO_Pin = GPIO_Pin_0;GPIOInitstruct.GPIO_Speed = GPIO_Speed_10MHz;GPIOInitstruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIOInitstruct);}	

#include "stm32f10x.h"
#include "shake.h"void Shake_Init()
{GPIO_InitTypeDef GPIOInitstruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIOInitstruct.GPIO_Pin = GPIO_Pin_1;GPIOInitstruct.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(GPIOA, &GPIOInitstruct);}
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"
#include "relay.h"
#include "shake.h"void delay(uint16_t time){uint16_t i = 0;while(time --){i = 12000;while(i--);}}int  main()
{Relay_Init();Shake_Init();GPIO_SetBits(GPIOA, GPIO_Pin_0);
//這個函數的作用是讓我們每次上電時繼電器先關上while(1){if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) == 0)//如果單片機從震動器得到低電平{
//則繼電器亮一下,說明IN口得到低電平使繼電器工作,COM和NO閉合使單片機上的低電平輸出小燈,使小燈亮GPIO_ResetBits(GPIOA, GPIO_Pin_0);delay(1000);GPIO_SetBits(GPIOA, GPIO_Pin_0);delay(1000);}else{GPIO_SetBits(GPIOA, GPIO_Pin_0);}	}}

433M無線模塊

1.433M無線模塊工作原理

數據發射模塊的工作頻率為315M,采用聲表諧振器SAW穩頻,頻率穩定度極高,當環境溫度

在-25~+85度之間變化時,頻飄僅為3ppm。

接收到信號,接收模塊對應針腳輸出高電平,有D0 D1 D2 D3,可能對遙控器的A/B/C/D。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

?2.引腳接線

1.供電正極,連接此引腳到電源,以提供433M無線模塊所需的電流

2.GND(-):地,連接此引腳到電源的負極或者地。

3.D0-D4:連接控制輸入信號通常用于連接控制信號,當按鍵變換控制外設信號

3.433M控制燈軟件開發流程

????????初始化系

????????????????初始化433M D0-D4引腳對應的GPIO外設時鐘

????????????????初始化433M D0-D4引腳配置

????????433M按鍵控制外設

小項目:433M無線遙控燈 (一個按鍵控制燈開,一個按鍵控制燈關)

?正常按下A按鍵,D0會輸出高電平發送給A0,B按鍵按下,D1會輸出高電平發送給A2,我們要實現D0按下燈開,D1按下燈關,板子是輸入模式

首先要初始化A0和A2兩個引腳,同時我們要控制板子上的LED燈 還要初始化A1的引腳

#include "stm32f10x.h"
#include "shake.h"void Shake_Init()
{GPIO_InitTypeDef GPIOInitstruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIOInitstruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_2;
//這里同時初始化兩個引腳GPIOInitstruct.GPIO_Mode = GPIO_Mode_IPD;
//板子是輸入模式GPIO_Init(GPIOA, &GPIOInitstruct);}#include "led.h"
#include "stm32f10x.h"
void Led_Init()
{GPIO_InitTypeDef led_initstruct;led_initstruct.GPIO_Pin = GPIO_Pin_1;led_initstruct.GPIO_Speed = GPIO_Speed_2MHz;led_initstruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &led_initstruct);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
}
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"
#include "relay.h"
#include "shake.h"int  main()
{Shake_Init();Led_Init();while(1){if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1)//如果A0引腳檢測到了高電平,說明按鍵A按下,無線模塊接受到信號并輸出給板子,要控制燈亮{GPIO_ResetBits(GPIOA,GPIO_Pin_1);//就輸出低電平讓燈亮}else if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2) == 1)//如果A2引腳檢測到了高點哦,說明按鍵B按下,無線模塊接受到信號并輸出給板子,要控制燈滅{GPIO_SetBits(GPIOA,GPIO_Pin_1);//就輸出高電平讓燈滅}}}

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

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

相關文章

14.Chromium指紋瀏覽器開發教程之WebGL指紋定制

WebGL指紋概述 當在瀏覽器打開的網頁上瀏覽內容時,看到的大多是平面的、靜態的圖像和文字。但是有時想要在網頁上看到更加生動、立體的圖像,如3D游戲、虛擬現實應用等。這時,就需要用到WebGL。 簡單來說,WebGL(Web G…

C# foreach 循環中獲取索引的完整方案

一、手動維護索引變量 ?實現方式?: 在循環外部聲明索引變量,每次迭代手動遞增: int index 0; foreach (var item in collection) { Console.WriteLine($"{index}: {item}"); index; } ?特點?: 簡單直接&#…

Android 下拉欄中的禁用攝像頭和麥克風隱藏

Android 下拉欄中的禁用攝像頭和麥克風隱藏 文章目錄 Android 下拉欄中的禁用攝像頭和麥克風隱藏一、前言二、下拉框中的禁用攝像頭和麥克風隱藏實現1、設置支持屬性為false2、修改代碼 三、其他1、下拉欄中的禁用攝像頭和麥克風隱藏小結2、 Android SensorPrivacyService ps&a…

數字后端設計 (四):時鐘樹綜合——讓芯片的「心跳」同步到每個角落

—— 試想全城的人要在同一秒按下開關——如果有的表快、有的表慢,結果會亂套!時鐘樹綜合就是給芯片內部裝一套精準的“廣播對時系統”,讓所有電路踩著同一個節拍工作。 1. 為什么時鐘如此重要? 芯片的「心跳」:時鐘信…

華為網路設備學習-19 路由策略

一、 二、 注意: 當該節點匹配模式為permit下時,參考if else 當該節點匹配模式為deny下時: 1、該節點中的apply子語句不會執行。 2、如果滿足所有判斷(if-match)條件時,拒絕該節點并跳出(即不…

機器學習決策樹

一、何為決策樹 決策樹(Decision Tree)是一種分類和回歸方法,是基于各種情況發生的所需條件構成決策樹,以實現期望最大化的一種圖解法。由于這種決策分支畫成圖形很像一棵樹的枝干,故稱決策樹。它的運行機制非常通俗易…

香港服務器CPU對比:Intel E3與E5系列核心區別與使用場景

香港服務器的 CPU 配置(核心數與主頻)直接決定了其并發處理能力和數據運算效率,例如高頻多核處理器可顯著提升多線程任務響應速度。在實際業務場景中,不同負載需求對 CPU 架構的要求存在顯著差異——以 Intel E3 和 E5 系列為例,由于兩者在性…

【Rust 精進之路之第8篇-工具賦能】深入 Cargo:依賴管理、構建配置與工作空間 (Workspace)

系列: Rust 精進之路:構建可靠、高效軟件的底層邏輯 作者: 碼覺客 發布日期: 2025-04-20 引言:超越構建,Cargo 是 Rust 生態的引擎 在我們的 Rust 學習之旅初期(第二篇),我們已經與 Cargo 有過初步的接觸。我們學會了使用 cargo new 創建項目骨架,用 cargo build 編…

#systemverilog# 進程控制問題#(八)關于#0 問題的使用(三)

今天,我們繼續研究一下上一節討論的問題。其實,還有一個小問題,我們來探討一下。 `timescale 1ns/10psmodule tb_top(); reg clk; reg reset;initial begin reset = 0; #10 reset = 1; #15 reset = 0; #50 $finish; endinitial beginfor(int i = 0; i < 4 ; i++)fork #…

Linux:簡單自定義shell

1.實現原理 考慮下?這個與shell典型的互動&#xff1a; [rootlocalhost epoll]# ls client.cpp readme.md server.cpp utility.h [rootlocalhost epoll]# ps PID TTY TIME CMD 3451 pts/0 00:00:00 bash 3514 pts/0 00:00:00 ps ?下圖的時間軸來表?事件的發?次序。其中時…

PLSQL語法入門--PL/SQL 基礎詳解

PL/SQL 基礎詳解 PL/SQL&#xff08;Procedural Language for SQL&#xff09;是 Oracle 數據庫中的一種過程式語言&#xff0c;它擴展了 SQL 的功能&#xff0c;允許開發者編寫復雜的程序邏輯。 一、匿名塊 解釋 匿名塊是 PL/SQL 的基本執行單位&#xff0c;它是一段獨立的…

Oracle--用戶管理

前言&#xff1a;本博客僅作記錄學習使用&#xff0c;部分圖片出自網絡&#xff0c;如有侵犯您的權益&#xff0c;請聯系刪除 用戶管理在 Oracle 數據庫中至關重要。一個服務器通常只運行一個 Oracle 實例&#xff0c;而一個 Oracle 用戶代表一個用戶群&#xff0c;他們通過該用…

UOS+N 卡 + CUDA 環境下 X86 架構 DeepSeek 基于 vLLM 部署與 Dify 平臺搭建指南

一、文檔說明 本文檔是一份關于 DeepSeek 在X86架構下通vLLM工具部署的操作指南&#xff0c;主要面向需要在UOSN卡CUDA環境中部署DeepSeek的技術人員&#xff0c;旨在指導文檔使用者完成從 Python 環境升級、vLLM 庫安裝、模型部署到 Dify 平臺搭建的全流程操作。 二、安裝Pyt…

操作系統之shell實現(下)

&#x1f31f; 各位看官好&#xff0c;我是maomi_9526&#xff01; &#x1f30d; 種一棵樹最好是十年前&#xff0c;其次是現在&#xff01; &#x1f680; 今天來學習C語言的相關知識。 &#x1f44d; 如果覺得這篇文章有幫助&#xff0c;歡迎您一鍵三連&#xff0c;分享給更…

Spark,流量統計案例

提前創好一個文件夾分為四個類 FlowBean中的代碼內容為&#xff1a;package org.example.flow; import org.apache.hadoop.io.Writable; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; //hadoop 序列化 //三個屬性&#xff1a;手機…

下載油管視頻 - yt-dlp

文章目錄 1. yt-dlp與you-get介紹1.1 主要功能對比1.2 使用場景1.3 安裝 2. 基本命令介紹2.1 默認下載視頻2.2 指定畫質和格式規則2.3 下載播放列表2.4 備注 3. 參考資料 之前只使用you-get下載b站視頻&#xff0c;當時了解you-get也可下載油管視頻&#xff0c;但之前無此需求&…

基于javaweb的SSM+Maven教材管理系統設計與實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

VS2022+QT環境配置及基本操作

參考文章 2025最新&#xff01;Visual Studio 2022 QT6.7 環境配置全攻略&#xff1a;一鍵搞定安裝與亂碼問題&#xff0c;開發效率翻倍&#xff01;&#xff08;全網最詳細教程&#xff0c;手把手教你搭建完美開發環境&#xff01;&#xff09;_vs2022 qt-CSDN博客 下載QT …

使用percona-toolkit同步mysql表數據

背景 做了主備mysql的配置以后&#xff0c;可能因為切換過程造成不一致的情況&#xff0c;這個時候可以處理的方式是全量導入再導出&#xff0c;這個有個問題就是操作的數據太多了 我們只需要數據補全同步即可 mysql的同步是基于binlog的&#xff0c;如果沒有記錄的部分的數據…

MDG 實現后端主數據變更后快照自動刷新的相關設置

文章目錄 前言實現過程BGRFC期初配置&#xff08;可選&#xff09;設置 MDG快照 BGRFC維護BP出站功能模塊 監控 前言 眾所周知&#xff0c;在MDG變更請求創建的同時&#xff0c;所有reuse模型實體對應的快照snapshot數據都會記錄下來。隨后在CR中&#xff0c;用戶可以修改這些…