【STM32】知識點介紹二:GPIO引腳介紹

文章目錄

    • 一、概述
    • 二、GPIO的工作模式
    • 三、寄存器編程

一、概述

??GPIO(英語:General-purpose input/output),即通用I/O(輸入/輸出)端口,是STM32可控制的引腳。STM32芯片的GPIO引腳與外部設備連接起來,可實現與外部通訊、控制外部硬件或者采集外部硬件數據的功能。

??STM32F407有8組IO。分別為GPIOA~GPIOH,除了GPIOH只有兩個IO引腳,其余每組IO有16根引腳。

??GPIO的復用:引腳復用是指將單個引腳配置為多個功能的能力。在 STM32 中,每個引腳都可以配置為多個不同的功能,如GPIO、定時器、UART、SPI等。這樣一來,通過配置引腳復用功能,可以實現多種硬件功能的連接和實現,提高了芯片的靈活性和可擴展性。引腳默認為IO口。

??GPIO的電平:引腳電平對芯片的某個引腳進行高低電平的輸出,以及可以去檢測某個引腳的電平狀態。一般電平采用都是TTL電平信號,TTL電平信號規定:+5V等價于邏輯“1”,0V等價于邏輯“0”。電平其實有一個電平范圍:>2V就表示高電平,<0.8V就表示低電平。


二、GPIO的工作模式

2.1 簡述
四種輸入模式:
(1)浮空輸入(即不連接內部上下拉電阻)
(2)上拉輸入(連接上拉電阻)
(3)下拉輸入(連接下拉電阻)
(4)模擬輸入(用于檢測模擬信號的輸入)

四種輸出模式
(1)開漏輸出(帶上拉或者下拉)
(2)復用開漏輸出(帶上拉或者下拉)
(3)推挽輸出(帶上拉或者下拉)
(4)復用推挽輸出(帶上拉或者下拉)

四種最大輸出速度
(1)2MHZ (低速)
(2)25MHZ (中速)
(3)50MHZ (快速)
(4)100MHZ (高速)

2.2引腳速度
??STM32微控制器的GPIO(General Purpose Input/Output)引腳速度設置是一個關鍵的配置參數,它影響著I/O口的性能,特別是當用于高速信號傳輸時。

(1)輸出速度設置及其意義
??STM32的GPIO端口在設置為輸出模式時,通常提供幾種速度選項,這些選項代表了I/O口驅動電路的不同響應速度,旨在優化噪聲控制和降低功耗。常見的速度設置包括:

  • 2MHz:適用于對噪聲敏感的應用或者低速信號傳輸。這種設置下,輸出驅動電路的響應較慢,但功耗較低,噪聲也相對較小。
  • 25MHz:平衡了速度和噪聲控制的需求,適用于中速信號傳輸。相比2MHz,它的響應更快,但仍能保持較好的信號完整性。
  • 50MHz:用于高速信號傳輸,如SPI或某些高速總線通信。雖然提供了最快的響應速度,但會增加噪聲并消耗更多功耗。
  • 100MHz:這是最快的速度設置,用于超高速信號傳輸,如更高速SPI或某些高速總線通信。雖然提供了最快的響應速度,但會增加更多的噪聲并消耗更多功耗。

(2)輸出速度與驅動電路的關系
??每個GPIO引腳都有與其關聯的輸出驅動電路,這些電路的設計能夠適應不同的速度要求。選擇更高的輸出速度意味著選擇了響應更快的驅動電路,這能夠更迅速地切換輸出狀態(即從高電平到低電平或反之),從而支持更高的數據傳輸速率。但是,更快的切換速度往往伴隨更大的開關噪聲和稍高的功耗。
在這里插入圖片描述

  • 開關噪聲:電子電路中的開關噪聲通常是指由于開關操作引起的電磁干擾(Electromagnetic Interference, EMI)或瞬態電壓現象。這種噪聲可能對電路的正常運行產生負面影響,特別是在高頻和高速數字電路中更為明顯。
    定義與成因:
    ??開關噪聲主要發生在電路中的快速切換元件上,比如晶體管、繼電器等。
    ??當這些元件從一種狀態迅速切換到另一種狀態時(如從導通變為截止),會在電路中產生瞬間的電流變化或電壓突變。
    ??這種突變會導致寄生電感和電容之間的能量交換,從而產生振蕩或尖峰信號。
  • 寄生電容:寄生電容是電路設計中常見的非理想效應,它們并不是設計師特意加入的元件,而是由于電路物理結構自然形成的。這些“寄生”元件可以影響電路的行為,尤其是在高頻應用中。
    定義:寄生電容是指在兩個導體之間無意中形成的一種電容效應。它通常出現在集成電路內部、印刷電路板(PCB)上的走線間或與地平面之間等地方。
    影響:
    ??在高頻電路中,寄生電容可以導致信號延遲增加。
    ??它可能造成不必要的耦合,使得一個信號路徑中的變化影響到另一個不相關的路徑。
    ??對于高速數字電路來說,寄生電容還會影響信號完整性,如引起過沖、下沖或者振鈴現象。
  • 過沖 (Overshoot):當信號從低電平切換到高電平時,如果信號超過目標電壓水平并達到更高的峰值,這種現象就稱為過沖。
    ??原因:通常是由于信號路徑上的寄生電感和電容相互作用造成的。當快速上升沿遇到寄生電感時,會產生一個反向電動勢,這會導致電壓超出預期值。
    ??影響:過沖可能導致器件承受高于其額定工作電壓的壓力,從而可能縮短器件壽命或直接造成損害。
  • 下沖 (Undershoot):與過沖相反,當下降沿信號低于目標低電平,并進一步跌落到更低的電壓水平時,這種現象被稱為下沖。
    ??原因:同樣是由寄生元件引起的,尤其是當信號通過較長的走線或者具有較大電感的路徑時。
    ??影響:下沖可能會使信號暫時達不到正確的邏輯電平,從而引起邏輯判斷錯誤。
  • 振鈴 (Ringing):振鈴是指在信號邊沿之后出現的一系列振蕩現象。這些振蕩可能圍繞著最終穩定的目標電壓上下波動。
    ??原因:振鈴通常是由于信號路徑上存在的寄生LC(電感-電容)諧振網絡造成的。當信號經過這樣的網絡時,會激發起振蕩模式。
    ??影響:振鈴不僅會影響當前信號的質量,還可能干擾相鄰線路的信號,尤其是在高密度布線的PCB上。

(3)配置建議
??應用需求導向:根據實際應用需求選擇合適的速度。例如,如果使用I2C接口且波特率為400kHz,選擇2MHz的速度可能已足夠,但如果希望預留更多的余量,可以考慮使用10MHz。

??信號完整性和噪聲考慮:高速信號傳輸時,應考慮信號的完整性,可能需要增加適當的終端電阻或其他抗干擾措施,以減少高速切換引起的反射和串擾。

??功耗考量:在低功耗應用中,應優先考慮低速設置以減少功耗。速度越高,需要電壓就越高,對應功耗也越高。

??電路的驅動能力由負載電容決定的,當負載電容一定時,GPIO端口的驅動能力越大,充放電的電流也越大,上升時間就越短。另外速度越高,EMI電磁干擾就越高,因此必須平衡GPIO性能與噪聲,特別是產品出口時要取得EMC(電磁兼容:Electro Magnetic Compatibility)認證。

2.3詳細分析
(1)對 I/O 端口進行編程作為輸出時:

  • 輸出緩沖器被打開:
    ??開漏模式(常用于總線,典型特征是引腳外部有上拉電阻):輸出寄存器中的“0”可激活 N-MOS,而輸出寄存器中的“1”會使端口保持高阻態 (Hi-Z)(P-MOS 始終不激活)。
    ??推挽模式:輸出寄存器中的“0”可激活 N-MOS,而輸出寄存器中的“1”可激活P-MOS。
  • 施密特觸發器輸入被打開
  • 根據 GPIOx_PUPDR 寄存器中的值決定是否打開弱上拉電阻和下拉電阻
  • 輸入數據寄存器每隔 1 個 AHB1 時鐘周期對 I/O 引腳上的數據進行一次采樣
  • 對輸入數據寄存器的讀訪問可獲取 I/O 狀態
  • 對輸出數據寄存器的讀訪問可獲取最后的寫入值
    在這里插入圖片描述
  • 當輸入信號為高電平的時候,上面的管子導通,下面的管子截止,輸出信號為高電平。
  • 當輸入信號為低電平的時候,上面的管子截止,下面的管子導通,輸出信號為低電平。
    在這里插入圖片描述
    推挽電路
    ??推挽電路(push-pull)就是兩個不同極性晶體管間連接的輸出電路。推挽電路采用兩個參數相同的功率BJT管或MOSFET管,以推挽方式存在于電路中,各負責正負半周的波形放大任務,電路工作時,兩只對稱的功率開關管每次只有一個導通,所以導通損耗小效率高。推挽輸出既可以向負載灌電流,也可以從負載抽取電流,常見應用場景音頻放大器,用于放大音頻信號以驅動揚聲器。
    在這里插入圖片描述
    工作原理
  • 當輸入信號為正半周時,NPN晶體管導通,PNP晶體管截止,輸出電流流過負載。
  • 當輸入信號為負半周時,NPN晶體管截止,PNP晶體管導通,輸出電流反方向流過負載。
  • 這樣,兩個晶體管輪流工作,使得輸出波形接近于輸入波形,但具有更大的幅度。
  • 在電路設計中,推挽輸出是一種很常用的輸出模式。推挽輸出有很多優點,比如更低的損耗,更安全的輸出等。“推挽”之意,即為當一個管子推出去時,另一個管子拉回來。輸入不同,交替導通。

鉗位二極管
??鉗位二極管是指用于在電路中將某點的電位進行限制的二極管,鉗位是將某點的電位進行限制,使其不大于或者不小于參考端的值,該點的電位是可變的,是利用二極管的正向導通特性來進行鉗位。IO引腳上下兩邊兩個二極管用于防止引腳外部過高、過低的電壓輸入。當引腳電壓高于VDD時,上方的二極管導通;當引腳電壓低于VSS時,下方的二極管導通,防止不正常電壓引入芯片導致芯片燒毀。但是盡管如此,還是不能直接外接大功率器件,須加大功率及隔離電路驅動,防止燒壞芯片或者外接器件無法正常工作。

??如上圖所示,有兩個保護二極管,用于保護內部電路,防止I/O引腳外部過高或者過低的電壓輸入時造成內部電路損壞。

??具體來講:當引腳輸入電壓高于VDD時,上面的二極管導通,輸入點電壓被鉗位到約VDD+0.7V;當引腳輸入電壓低于VSS時,下面的二極管導通,輸入點電壓被鉗位到約VSS-0.7V,從而使輸入芯片內部的電壓出于比較穩定的值(鉗位作用)。

??雖然有二極管的保護,但這樣的保護很有限,大電壓大電流的輸入很容易燒壞芯片,在實際設計中要考慮設計引腳的保護電路。
在這里插入圖片描述
??假設二極管D1和D2的正向導通壓降都是uD,反向擊穿電壓大于VDD+uD,Pin點的電位記作Upin,則:

  1. 當Pin點的電位Upin ≥ (VDD+uD)時,此時D1會導通而將Pin點的電位限制在VDD+uD,D2截止;
  2. 當Pin點的電位在范圍(GND-uD) < Upin < (VDD+uD)時,D1截止,D2截止;
  3. 當Pin點的電位Upin ≤ (GND-uD)時,D1截止,D2會導通而將Pin點的電位限制在GND-uD。

??綜上所述,Pin點的電位范圍會被限制在(GND-uD) ≤ Upin ≤ (VDD+uD)。若VDD=5V、GND=0V、uD=0.7V,則Pin點電位范圍被限制在 -0.7V ≤ Upin ≤ 5.7V;若忽略D1和D2的正向導通壓降,則可認為Pin點電位范圍被限制為 0V ≤ Upin ≤ 5V。

鉗位電路相關說明
??二極管具有單向導電性,可利用這一特性對電路進行整流或鉗位。鉗位的定義:將信號強行鉗制到某一電位上,抬高或降低信號的基準電位,但不改變原信號的波形。鉗位電路分為正向鉗位和負向鉗位電路。

  • 當二極管負極接地時,正極端電路的電位比地高,二極管導通,電位被拉下來,即正極端電壓被鉗位到零電位或零電位以下(忽略二極管壓降)。
  • 當二極管正極接地時,負極端電路的電位比地高,二極管截止,電位將不會受二極管影響。

(2)對 I/O 端口進行編程作為輸入時:

  • 輸出緩沖器被關閉
  • 施密特觸發器輸入被打開
  • 根據 GPIOx_PUPDR 寄存器中的值決定是否打開上拉和下拉電阻
  • 輸入數據寄存器每隔 1 個 AHB1 時鐘周期對 I/O 引腳上的數據進行一次采樣
  • 對輸入數據寄存器的讀訪問可獲取 I/O 狀態在這里插入圖片描述
    施密特觸發器
    ??在電子學中,施密特觸發器(英語:Schmitt trigger)是包含正反饋的比較器電路。
    在這里插入圖片描述
    ??對于標準施密特觸發器,當輸入電壓高于正向閾值電壓,輸出為高;當輸入電壓低于負向閾值電壓,輸出為低;當輸入在正負向閾值電壓之間,輸出不改變,也就是說輸出由高電準位翻轉為低電準位,或是由低電準位翻轉為高電準位時所對應的閾值電壓是不同的。只有當輸入電壓發生足夠的變化時,輸出才會變化,因此將這種元件命名為觸發器。

??施密特觸發器可作為波形整形電路,能將模擬信號波形整形為數字電路能夠處理的方波波形,而且由于施密特觸發器具有滯回特性,所以可用于抗干擾,其應用包括在開回路配置中用于抗擾,以及在閉回路正回授/負回授配置中用于實現多諧振蕩器。

(3)對 I/O 端口進行編程作為復用功能時:

  • 可將輸出緩沖器配置為開漏或推挽
  • 輸出緩沖器由來自外設的信號驅動(發送器使能和數據)
  • 施密特觸發器輸入被打開
  • 根據 GPIOx_PUPDR 寄存器中的值決定是否打開弱上拉電阻和下拉電阻
  • 輸入數據寄存器每隔 1 個 AHB1 時鐘周期對 I/O 引腳上的數據進行一次采樣
  • 對輸入數據寄存器的讀訪問可獲取 I/O 狀態
    在這里插入圖片描述

(4)對 I/O 端口進行編程作為模擬配置時:

  • 輸出緩沖器被禁止。
  • 施密特觸發器輸入停用,I/O 引腳的每個模擬輸入的功耗變為零。施密特觸發器的輸出被 強制處理為恒定值 (0)。
  • 弱上拉和下拉電阻被關閉。
  • 對輸入數據寄存器的讀訪問值為“0”。
  • 在模擬配置中,I/O 引腳不能為 5 V 容忍
    在這里插入圖片描述

2.4上下拉電阻
??上下拉電阻(Pull-up 和 Pull-down Resistors)是電子電路中常用的一種組件,用于確保數字電路中的信號線在沒有其他信號源驅動時處于一個確定的狀態。它們對于防止信號線懸空(浮空)非常重要,因為在懸空狀態下,信號線可能會受到噪聲干擾,導致誤操作。

(1)上拉電阻

  • 將一個不確定的信號,通過一個電阻與電源VCC相連,固定在高電平;
  • 上拉是對器件注入電流;灌電流;
  • 當一個接有上拉電阻的IO端口設置為輸入狀態時,它的常態為高電平;

(2)下拉電阻

  • 將一個不確定的信號,通過一個電阻與地GND相連,固定在低電平;
  • 下拉是從器件輸出電流;拉電流;
  • 當一個接有下拉電阻的IO端口設置為輸入狀態時,它的常態為低電平;

三、寄存器編程

??寄存器是微處理器或微控制器內部的小型存儲單元,用于臨時存儲數據、指令或控制信號。寄存器通常由硬件實現,并且可以直接通過CPU訪問。寄存器的設計目的是為了提高處理器的性能,因為它們比內存訪問更快。在微控制器如STM32F407中,寄存器用于配置和控制各種外設的功能。

3.1寄存器分類
寄存器可以根據它們的功能和位置分為幾類:

  • 通用寄存器:用于存儲數據或作為臨時存儲空間。
  • 狀態寄存器:存儲有關處理器狀態的信息,如標志位。
  • 控制寄存器:用于控制處理器的行為。
  • 外設寄存器:用于配置和控制微控制器中的外設。

3.2stm32常見寄存器及用途
??STM32F407是一款高性能的ARM Cortex-M4微控制器,它擁有大量的寄存器用于配置和控制其功能。下面是一些STM32F407中常見的寄存器及其用途:

(1)GPIO寄存器
GPIO(General-Purpose Input/Output)寄存器用于配置和控制通用輸入輸出引腳。

  • GPIOx_MODER:配置GPIO引腳的工作模式(輸入、輸出、復用功能等)。
  • GPIOx_OTYPER:配置GPIO引腳的輸出類型(推挽或開漏)。
  • GPIOx_OSPEEDR:配置GPIO引腳的輸出速度。
  • GPIOx_PUPDR:配置GPIO引腳的上拉/下拉電阻。
  • GPIOx_IDR:讀取GPIO引腳的輸入值。
  • GPIOx_ODR:設置GPIO引腳的輸出值。
  • GPIOx_BSRR:設置或清除GPIO引腳的輸出值。
  • GPIOx_LCKR:鎖定GPIO引腳的配置。

(2)時鐘控制寄存器
這些寄存器用于控制和配置STM32F407的時鐘系統。

  • RCC_CR:控制時鐘源的選擇和啟動。
  • RCC_PLLCFGR:配置PLL(Phase-Locked Loop)時鐘。
  • RCC_CFGR:配置時鐘樹,包括AHB/APB總線時鐘。
  • RCC_CIR:時鐘中斷寄存器。

(3)中斷寄存器
這些寄存器用于控制和配置中斷。

  • NVIC_ISER:中斷使能寄存器。
  • NVIC_ICER:中斷清除使能寄存器。
  • NVIC_ISPR:中斷掛起寄存器。
  • NVIC_ICPR:中斷清除掛起寄存器。
  • NVIC_IPR:中斷優先級寄存器。

3.3寄存器編程
??寄存器編程是指通過直接對寄存器進行讀寫操作來控制微控制器或微處理器的行為。這種編程方式通常用于底層硬件訪問和控制,比如配置GPIO端口、控制外設、設置中斷等。寄存器編程涉及到對寄存器的地址映射和位操作。

寄存器編程的一般步驟

  1. 確定寄存器地址:每個寄存器都有一個唯一的地址,該地址用于在內存映射中定位寄存器。
  2. 讀取寄存器值:讀取寄存器當前的狀態,通常使用讀取指令或直接訪問內存地址。
  3. 修改寄存器值:根據需要改變寄存器中的某些位,這通常涉及位操作(如位移、按位或、按位與等)。
  4. 寫入寄存器:將修改后的值寫回寄存器。

(1)使能端口F的硬件時鐘:

  • 使用RCC_AHB1ENR寄存器。
  • 地址:0x40023800 + 0x30。
  • 操作:使能端口F的硬件時鐘。
// 使能端口F的硬件時鐘
volatile uint32_t *RCC_AHB1ENR=(uint32_t *)(0x40023800+0x30);	
*RCC_AHB1ENR|=1<<5;

(2)配置GPIOF9為輸出模式:

  • 使用GPIOx_MODER寄存器。
  • 地址:0x40021400 + 0x00。
  • 操作:設置第9個引腳為輸出模式。
// 設置GPIOF9為輸出模式
volatile uint32_t *GPIOF_MODER = (uint32_t *)(0x40021400 + 0x00);
*GPIOF_MODER |= (0x01 << (9 * 2));

(3)配置GPIOF9為推挽輸出:

  • 使用GPIOx_OTYPER寄存器。
  • 地址:0x40021400 + 0x04。
  • 操作:設置第9個引腳為推挽輸出。
// 設置GPIOF9為推挽輸出
volatile uint32_t *GPIOF_OTYPER = (uint32_t *)(0x40021400 + 0x04);
*GPIOF_OTYPER &= ~(0x01 << 9);

(4)配置GPIOF9的輸出速度:

  • 使用GPIOx_OTYPER寄存器。
  • 地址:0x40021400 + 0x08。
  • 操作:設置第9個引腳的輸出速度。
// 設置GPIOF9的速度為高速
volatile uint32_t *GPIOF_OSPEEDR = (uint32_t *)(0x40021400 + 0x08);
*GPIOF_OSPEEDR |= (0x03 << (9 * 2));

(5)配置GPIOF9的上拉/下拉:

  • 使用GPIOx_PUPDR寄存器。
  • 地址:0x40021400 + 0x0C。
  • 操作:設置第9個引腳為無上拉/下拉。
// 設置GPIOF9為無上拉/下拉
volatile uint32_t *GPIOF_PUPDR = (uint32_t *)(0x40021400 + 0x0C);
*GPIOF_PUPDR &= ~(0x03 << (9 * 2));

(6)設置GPIOF9為低電平:

  • 使用GPIOx_ODR寄存器。
  • 地址:0x40021400 + 0x14。
  • 操作:設置第9個引腳為低電平。
// 設置GPIOF9為低電平
volatile uint32_t *GPIOF_ODR = (uint32_t *)(0x40021400 + 0x14);
*GPIOF_ODR &= ~(0x01 << 9);

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

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

相關文章

JavaScript流程控制精講(二)運算符與循環實戰

JavaScript流程控制精講&#xff08;二&#xff09;運算符與循環實戰 學習目標&#xff1a;掌握條件判斷與循環控制&#xff0c;實現基礎業務邏輯 核心要點&#xff1a;運算符優先級 | 短路運算 | 循環優化 | 項目實戰 一、運算符進階技巧 1.1 算術運算符 console.log(5 % 3)…

如何在IPhone 16Pro上運行python文件?

在 iPhone 16 Pro 上運行 Python 文件需要借助第三方工具或遠程服務&#xff0c;以下是具體實現方法和步驟&#xff1a; 一、本地運行方案&#xff08;無需越獄&#xff09; 使用 Python 編程類 App 以下應用可在 App Store 下載&#xff0c;支持直接在 iPhone 上編寫并運行 …

【趙渝強老師】達夢數據庫的數據庫對象

達夢數據庫中包含各種數據庫對象&#xff0c;主要分為兩大類型&#xff1a;基本數據庫對象和復雜數據庫對象。下面分別進行介紹。 視頻講解如下 【趙渝強老師】達夢數據庫的數據庫對象 一、 基本數據庫對象 常見的基本數據庫對象有&#xff1a;表、索引、視圖、序列、同義詞等…

【每日算法】Day 6-1:哈希表從入門到實戰——高頻算法題(C++實現)

摘要 &#xff1a;掌握高頻數據結構&#xff01;今日深入解析哈希表的核心原理與設計實現&#xff0c;結合沖突解決策略與大廠高頻真題&#xff0c;徹底掌握O(1)時間復雜度的數據訪問技術。 一、哈希表核心思想 哈希表&#xff08;Hash Table&#xff09; 是一種基于鍵值對的…

LeetCode 第29題、30題

LeetCode 第29題&#xff1a;兩數相除 題目描述 給你兩個整數&#xff0c;被除數dividend和除數divisor。將兩數相除&#xff0c;要求不使用乘法、除法和取余運算。整數除法應該向零截斷&#xff0c;也就是截去其小數部分。例如&#xff0c;8.345將被截斷為8&#xff0c;-2.733…

26考研——樹與二叉樹_樹、森林(5)

408答疑 文章目錄 二、樹、森林樹的基本概念樹的定義和特性樹的定義樹的特性 基本術語樹的基本術語和概念祖先、子孫、雙親、孩子、兄弟和堂兄弟結點的層次、度、深度和高度樹的度和高度分支結點和葉結點有序樹和無序樹路徑和路徑長度 森林的基本術語和概念森林的定義森林與樹的…

【HarmonyOS Next之旅】DevEco Studio使用指南(六)

目錄 1 -> 在模塊中添加Ability 1.1 -> Stage模型添加UIAbility 1.1.1 -> 在模塊中添加UIAbility 1.1.2 -> 在模塊中添加Extension Ability 2 -> 創建服務卡片 2.1 -> 概述 2.2 -> 使用約束 2.3 -> 創建服務卡片 2.4 -> 創建動態/靜態卡片…

Langchain 多模態輸入和格式化輸出

多模態輸入 圖片處理&#xff08;最高頻&#xff09; 1.1 URL形式&#xff08;推薦大文件&#xff09; from langchain.schema import HumanMessage from langchain.chat_models import ChatOpenAIchat ChatOpenAI(model"gpt-4-vision-preview")message HumanMes…

Excel多級聯動下拉菜單的自動化設置(使用Python中的openpyxl模塊)

1 主要目的 在Excel中&#xff0c;經常會遇到需要制作多級聯動下拉菜單的情況&#xff0c;要求單元格內填寫的內容只能從指定的多個選項中進行選擇&#xff0c;并且需要設置多級目錄&#xff0c;其中下級目錄的選項內容要根據上級目錄的填寫內容確定&#xff0c;如下圖所示&am…

3.25-1 postman執行+弱網測試

1.導出json腳本 2.打包json文件 3.下載的文件 二 .導入腳本 選擇文件 點擊導入 導入的接口 三.多接口運行 &#xff08;1&#xff09;集合右鍵&#xff0c;點擊run &#xff0c;運行多個接口 2.編輯環境&#xff0c;集合&#xff0c;執行次數等 運行多個接口 四.運行多個接口…

Pear Admin Flask 開發問題

下載代碼請復制以下命令到終端執行 git clone https://gitee.com/pear-admin/pear-admin-flask 于是我下載git 完成安裝后&#xff1a; 安裝 Git 后出現的頁面是 “Git for Windows 的版本發布說明&#xff08;Release Notes&#xff09;”&#xff0c;通常會在安裝完成后自動彈…

12-scala樣例類(Case Classes)

例類&#xff08;Case classes&#xff09;和普通類差不多&#xff0c;只有幾點關鍵差別&#xff0c;接下來的介紹將會涵蓋這些差別。樣例類非常適合用于不可變的數據。 定義一個樣例類 一個最簡單的樣例類定義由關鍵字case class&#xff0c;類名&#xff0c;參數列表&#…

cmakelist中添加opencv

版本選擇 qt的msvc&#xff0c;版本2019 opencv版本 4.5.3 配置了環境變量 x64下的v14中的bin 配置頭文件 {"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}","d:\\QT\\6.5.3\\msvc20…

【C語言】文件操作(詳解)

個人主頁 今天我們來講一下有關文件的相關操作&#xff0c;希望看完這篇文章對你有所幫助&#xff0c;大力感謝你對博主的支持&#xff01; 文章目錄 ?一、為什么使用文件&#x1f389;二、什么是文件2.1 程序文件2.2 數據文件2.3 文件名 &#x1f3a1;三、二進制文件和文本…

基于web的家政服務網站

內容摘要 由于互聯網的使用&#xff0c;人們在管理、應用、服務等領域使用數據更加簡潔、方便&#xff0c;大大提高了工作效率。互聯網正逐漸融入我們的生活&#xff0c;影響和改變我們的生活。 家政服務管理系統是典型的信息管理系統&#xff08;MIS&#xff09;。其開發主要…

【leetcode hot 100 739】每日溫度

解法一&#xff1a;暴力解法 class Solution {public int[] dailyTemperatures(int[] temperatures) {int ntemperatures.length; // 指向要找下一個更高溫度的地方int[] result new int[n];for(int left0;left<n;left){int rightleft1; // 指向正在找最高溫度的地方wh…

藍橋杯C++基礎算法-0-1背包(優化為一維)

這段代碼實現了0-1 背包問題的動態規劃解法&#xff0c;并且使用了滾動數組來優化空間復雜度。以下是代碼的詳細思路解析&#xff1a; 1. 問題背景 給定 n 個物品&#xff0c;每個物品有其體積 v[i] 和價值 w[i]&#xff0c;以及一個容量為 m 的背包。目標是選擇物品使得總價值…

算法 | 麻雀搜索算法原理,公式,改進算法綜述,應用場景及matlab完整代碼

一、麻雀搜索算法(SSA)原理 1. 算法基礎 麻雀搜索算法(Sparrow Search Algorithm, SSA)是2020年提出的一種群體智能優化算法,靈感來源于麻雀群體的覓食與反捕食行為。算法將麻雀分為三類角色:發現者(Producer):適應度最高,負責探索全局最優區域;加入者(Follower)…

SQL 版本歷史

SQL&#xff08;Structured Query Language&#xff09;是一種用于管理和操作關系數據庫的標準語言。SQL標準由多個組織制定和維護&#xff0c;主要包括以下幾個版本&#xff1a; SQL-86 (SQL-87): 這是SQL的第一個官方標準&#xff0c;由ANSI&#xff08;美國國家標準協會&…

CAT1模塊 EC800M HTTP 使用后續記錄

記錄一下 CAT1 模塊EC800 HTTP 使用后續遇到的問題 by 矜辰所致目錄 前言一、一些功能的完善1.1 新的交互指令添加1.2 連不上網絡處理 二、問題出現三、分析及解決3.1 定位問題3.2 問題分析與解決3.2.1 查看變量在內存中的位置 3.3 數據類型說明3.3.1 常用格式化輸出符號…