日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]一、STM32中GPIO模式的選擇方法:(1)浮空輸入_IN_FLOATING ——浮空輸入,可以做KEY識別,RX1(2)帶上拉輸入_IPU——IO內(nèi)部上拉電阻輸入(3)帶下拉輸入_IPD—— IO內(nèi)部下拉電阻輸入(4)模擬輸入_AIN ——應(yīng)用AD

一、STM32中GPIO模式的選擇方法:

(1)浮空輸入_IN_FLOATING ——浮空輸入,可以做KEY識別,RX1

(2)帶上拉輸入_IPU——IO內(nèi)部上拉電阻輸入

(3)帶下拉輸入_IPD—— IO內(nèi)部下拉電阻輸入

(4)模擬輸入_AIN ——應(yīng)用ADC模擬輸入,或者低功耗下省電

(5)開漏輸出_OUT_OD ——IO輸出0接GND,IO輸出1,懸空,需要外接上拉電阻,才能實(shí)現(xiàn)輸出高電平。當(dāng)輸出為1時,IO口的狀態(tài)由上拉電阻拉高電平,但由于是開漏輸出模式,這樣IO口也就可以由外部電路改變?yōu)榈碗娖交虿蛔???梢宰xIO輸入電平變化,實(shí)現(xiàn)C51的IO雙向功能

(6)推挽輸出_OUT_PP ——IO輸出0-接GND, IO輸出1 -接VCC,讀輸入值是未知的

(7)復(fù)用功能的推挽輸出_AF_PP ——片內(nèi)外設(shè)功能(I2C的SCL,SDA)

(8)復(fù)用功能的開漏輸出_AF_OD——片內(nèi)外設(shè)功能(TX1,MOSI,MISO.SCK.SS)

STM32設(shè)置實(shí)例:

(1)模擬I2C使用開漏輸出_OUT_OD,接上拉電阻,能夠正確輸出0和1;讀值時先GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以讀IO的值;使用GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);

(2)如果是無上拉電阻,IO默認(rèn)是高電平;需要讀取IO的值,可以使用帶上拉輸入_IPU和浮空輸入_IN_FLOATING和開漏輸出_OUT_OD;

二、在STM32中如何配置片內(nèi)外設(shè)使用的IO端口

首先

①配置輸入的時鐘和初始化后即被激活(開啟);

②如果使用該外設(shè)的輸入輸出管腳,則需要配置相應(yīng)的GPIO端口(否則該外設(shè)對應(yīng)的輸入輸出管腳可以做普通GPIO管腳使用);

③再對外設(shè)進(jìn)行詳細(xì)配置。

對應(yīng)到外設(shè)的輸入輸出功能有下述三種情況:

①外設(shè)對應(yīng)的管腳為輸出:需要根據(jù)外圍電路的配置選擇對應(yīng)的管腳為復(fù)用功能的推挽輸出或復(fù)用功能的開漏輸出。

②外設(shè)對應(yīng)的管腳為輸入:則根據(jù)外圍電路的配置可以選擇浮空輸入、帶上拉輸入或帶下拉輸入。

③ADC對應(yīng)的管腳:配置管腳為模擬輸入。

如果把端口配置成復(fù)用輸出功能,則引腳和輸出寄存器斷開,并和片上外設(shè)的輸出信號連接。將管腳配置成復(fù)用輸出功能后,如果外設(shè)沒有被激活,那么它的輸出將不確定。

三、GPIO庫函數(shù)

首先,先介紹一下STM32固件庫函數(shù)的命名規(guī)則:

在函數(shù)名中,只允許存在一個下劃線,用以分隔外設(shè)縮寫和函數(shù)名的其它部分。

名為xx_Init的函數(shù),其功能是根據(jù)xx_InitTypeDef中指定的參數(shù),初始化外設(shè)xx。

名為xx_DeInit的函數(shù),其功能為復(fù)位外設(shè)xx的所有寄存器至缺省值。

名為xx_StructInit的函數(shù),其功能為通過設(shè)置xx_InitTypeDef 結(jié)構(gòu)中的各種參數(shù)來定義外設(shè)的功能。

名為xx_Cmd的函數(shù),其功能為使能或者失能外設(shè)xx。

名為xx_ITConfig的函數(shù),其功能為使能或者失能來自外設(shè)xx某中斷源。

名為xx_DMAConfig的函數(shù),其功能為使能或者失能外設(shè)xx的DMA接口。

名為xx_GetFlagStatus的函數(shù),其功能為檢查外設(shè)xx某標(biāo)志位被設(shè)置與否。

名為xx_ClearFlag的函數(shù),其功能為清除外設(shè)xx標(biāo)志位。

名為xx_GetITStatus的函數(shù),其功能為判斷來自外設(shè)xx的中斷發(fā)生與否。

名為xx_ClearITPendingBit的函數(shù),其功能為清除外設(shè)xx中斷待處理標(biāo)志位。

typedef signed long s32;

Type0def signed short s16;

typedef signed char s8;

typedef signed long const sc32;

typedef signed short const sc16;

typedef signed char const sc8;

typedef volatile signed long vs32;

typedef volatile signed short vs16;

typedef volatile signed char vs8;

typedef volatile signed long const vsc32;

typedef volatile signed short const vsc16;

typedef volatile signed char const vsc8;

typedef unsigned long u32;

typedef unsigned short u16;

typedef unsigned char u8;

typedef unsigned long const uc32;

typedef unsigned short const uc16;

typedef unsigned char const uc8;

typedef volatile unsigned long vu32;

typedef volatile unsigned short vu16;

typedef volatile unsigned char vu8;

typedef volatile unsigned long const vuc32;

typedef volatile unsigned short const vuc16;

typedef volatile unsigned char const vuc8;

GPIO寄存器結(jié)構(gòu)

GPIO_TypeDef和AFIO_TypeDef,在文件“stm32f10x_map.h”中定義:

typedef struct

{

vu32 CRL;

vu32 CRH;

vu32 IDR;

vu32 ODR;

vu32 BSRR;

vu32 BRR;

vu32 LCKR;

}

GPIO_TypeDef;

typedef struct

{

vu32 EVCR;

vu32 MAPR;

vu32 EXTICR[4];

}

AFIO_TypeDef;

四、庫函數(shù)

函數(shù)GPIO_DeInit

功能描述:將外設(shè)GPIOx寄存器重設(shè)為缺省值

例:

GPIO_DeInit(GPIOA);

函數(shù)GPIO_AFIODeInit

功能描述:將復(fù)用功能(重映射事件控制和EXTI設(shè)置)重設(shè)為缺省值

例:

GPIO_AFIODeInit();

函數(shù)GPIO_Init

功能描述:根據(jù)GPIO_InitStruct中指定的參數(shù)初始化外設(shè)GPIOx寄存器

例:

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitTypeDef structure

GPIO_InitTypeDef定義于文件“stm32f10x_gpio.h”:

typedef struct

{

u16 GPIO_Pin;

GPIOSpeed_TypeDef GPIO_Speed;

GPIOMode_TypeDef GPIO_Mode;

}

GPIO_InitTypeDef;

GPIO_Pin

該參數(shù)選擇待設(shè)置的GPIO管腳,使用操作符“|”可以一次選中多個管腳。可以使用下表中的任意組合。

GPIO_Pin_None:無管腳被選中

GPIO_Pin_x:選中管腳x(0--15)

GPIO_Pin_All:選中全部管腳

GPIO_Speed

GPIO_Speed:用以設(shè)置選中管腳的速率。

GPIO_Speed_10MHz:最高輸出速率10MHz

GPIO_Speed_2MHz:最高輸出速率2MHz

GPIO_Speed_50MHz:最高輸出速率50MHz

GPIO_Mode

GPIO_Mode:用以設(shè)置選中管腳的工作狀態(tài)。

GPIO_Mode_AIN:模擬輸入

GPIO_Mode_IN_FLOATING:浮空輸入

GPIO_Mode_IPD:下拉輸入

GPIO_Mode_IPU:上拉輸入

GPIO_Mode_Out_OD:開漏輸出

GPIO_Mode_Out_PP:推挽輸出

GPIO_Mode_AF_OD:復(fù)用開漏輸出

GPIO_Mode_AF_PP:復(fù)用推挽輸出

函數(shù)GPIO_StructInit

功能描述:把GPIO_InitStruct中的每一個參數(shù)按缺省值填入

例:

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_StructInit(&GPIO_InitStructure);

GPIO_InitStruct:

GPIO_Pin:GPIO_Pin_All

GPIO_Speed:GPIO_Speed_2MHz

GPIO_Mode:GPIO_Mode_IN_FLOATING

函數(shù)GPIO_ReadInputDataBit

功能描述:讀取指定端口管腳的輸入

例:

u8 ReadValue;

ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);

函數(shù)GPIO_ReadInputData

功能描述:讀取指定的GPIO端口輸入

例:

u16 ReadValue;

ReadValue = GPIO_ReadInputData(GPIOC);

函數(shù)GPIO_ReadOutputDataBit

功能描述:讀取指定端口管腳的輸出

例:

u8 ReadValue;

ReadValue = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7);

函數(shù)GPIO_ReadOutputData

功能描述:讀取指定的GPIO端口輸出

例:

u16 ReadValue;

ReadValue = GPIO_ReadOutputData(GPIOC);

函數(shù)GPIO_SetBits

功能描述:置位指定的數(shù)據(jù)端口位

例:

GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);

函數(shù)GPIO_ResetBits

功能描述:清除指定的數(shù)據(jù)端口位

例:

GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);

函數(shù)GPIO_WriteBit

功能描述:設(shè)置或者清除指定的數(shù)據(jù)端口位

例:

GPIO_WriteBit(GPIOA, GPIO_Pin_15, Bit_SET);

函數(shù)GPIO_Write

功能描述:向指定GPIO數(shù)據(jù)端口寫入數(shù)據(jù)

例:

GPIO_Write(GPIOA, 0x1101);

函數(shù)GPIO_PinLockConfig

功能描述:鎖定GPIO管腳設(shè)置寄存器

例:

GPIO_PinLockConfig(GPIOA, GPIO_Pin_0 | GPIO_Pin_1);

函數(shù)GPIO_EventOutputConfig

功能描述:選擇GPIO管腳用作事件輸出

例:

GPIO_EventOutputConfig(GPIO_PortSourceGPIOE, GPIO_PinSource5);

GPIO_PortSource

GPIO_PortSource用以選擇用作事件輸出的GPIO端口。

GPIO_PinSource

GPIO_PinSource用以選擇用作事件輸出的GPIO管腳。

函數(shù)GPIO_EventOutputCmd

功能描述:使能或者失能事件輸出

例:

GPIO_EventOutputConfig(GPIO_PortSourceGPIOC, GPIO_PinSource6);

GPIO_EventOutputCmd(ENABLE);

函數(shù)GPIO_PinRemapConfig

功能描述:改變指定管腳的映射

例:

GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);

GPIO_Remap

GPIO_Remap用以選擇用作事件輸出的GPIO端口。

GPIO_Remap_SPI1:SPI1復(fù)用功能映射

GPIO_Remap_I2C1:I2C1復(fù)用功能映射

GPIO_Remap_USART1:USART1復(fù)用功能映射

GPIO_PartialRemap_USART3:USART2復(fù)用功能映射

GPIO_FullRemap_USART3:USART3復(fù)用功能完全映射

GPIO_PartialRemap_TIM1:USART3復(fù)用功能部分映射

GPIO_FullRemap_TIM1:TIM1復(fù)用功能完全映射

GPIO_PartialRemap1_TIM2:TIM2復(fù)用功能部分映射1

GPIO_PartialRemap2_TIM2:TIM2復(fù)用功能部分映射2

GPIO_FullRemap_TIM2:TIM2復(fù)用功能完全映射

GPIO_PartialRemap_TIM3:TIM3復(fù)用功能部分映射

GPIO_FullRemap_TIM3:TIM3復(fù)用功能完全映射

GPIO_Remap_TIM4:TIM4復(fù)用功能映射

GPIO_Remap1_CAN:CAN復(fù)用功能映射1

GPIO_Remap2_CAN:CAN復(fù)用功能映射2

GPIO_Remap_PD01:PD01復(fù)用功能映射

GPIO_Remap_SWJ_NoJTRST:除JTRST外SWJ完全使能(JTAG SW-DP)

GPIO_Remap_SWJ_JTAGDisable:JTAG-DP失能 SW-DP使能

GPIO_Remap_SWJ_Disable:SWJ完全失能(JTAG SW-DP)

函數(shù)GPIO_EXTILineConfig

功能描述:選擇GPIO管腳用作外部中斷線路

例:

GPIO_EXTILineConfig(GPIO_PortSource_GPIOB, GPIO_PinSource8);


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

在嵌入式開發(fā)中,STM32的時鐘系統(tǒng)因其靈活性和復(fù)雜性成為開發(fā)者關(guān)注的焦點(diǎn)。然而,看似簡單的時鐘配置背后,隱藏著諸多易被忽視的陷阱,輕則導(dǎo)致系統(tǒng)不穩(wěn)定,重則引發(fā)硬件損壞。本文從時鐘源選擇、PLL配置、總線時鐘分配等關(guān)鍵環(huán)...

關(guān)鍵字: STM32 時鐘系統(tǒng)

在嵌入式系統(tǒng)開發(fā)中,STM32系列微控制器的內(nèi)部溫度傳感器因其低成本、高集成度特性,廣泛應(yīng)用于設(shè)備自檢、環(huán)境監(jiān)測等場景。然而,受芯片工藝差異和電源噪聲影響,其原始數(shù)據(jù)存在±1.5℃的固有誤差。本文從硬件配置、校準(zhǔn)算法、軟...

關(guān)鍵字: STM32 溫度傳感器

在能源效率與智能化需求雙重驅(qū)動下,AC-DC轉(zhuǎn)換器的數(shù)字控制技術(shù)正經(jīng)歷從傳統(tǒng)模擬方案向全數(shù)字架構(gòu)的深刻變革?;赟TM32微控制器的PFM(脈沖頻率調(diào)制)+PWM(脈沖寬度調(diào)制)混合調(diào)制策略,結(jié)合動態(tài)電壓調(diào)整(Dynam...

關(guān)鍵字: AC-DC STM32

當(dāng)前智能家居產(chǎn)品需求不斷增長 ,在這一背景下 ,對現(xiàn)有澆花裝置缺陷進(jìn)行了改進(jìn) ,設(shè)計出基于STM32單片機(jī)的全 自動家用澆花機(jī)器人。該設(shè)計主要由機(jī)械結(jié)構(gòu)和控制系統(tǒng)構(gòu)成 ,機(jī)械結(jié)構(gòu)通過麥克納姆輪底盤與噴灑裝置的結(jié)合實(shí)現(xiàn)機(jī)器...

關(guān)鍵字: STM32 麥克納姆輪 安全可靠 通過性強(qiáng)

用c++編程似乎是讓你的Arduino項目起步的障礙嗎?您想要一種更直觀的微控制器編程方式嗎?那你需要了解一下Visuino!這個圖形化編程平臺將復(fù)雜電子項目的創(chuàng)建變成了拖動和連接塊的簡單任務(wù)。在本文中,我們將帶您完成使...

關(guān)鍵字: Visuino Arduino ESP32 STM32

基于STM32與LoRa技術(shù)的無線傳感網(wǎng)絡(luò)憑借其低功耗、廣覆蓋、抗干擾等特性,成為環(huán)境監(jiān)測、工業(yè)自動化等場景的核心解決方案。然而,如何在復(fù)雜電磁環(huán)境中實(shí)現(xiàn)高效休眠調(diào)度與動態(tài)信道優(yōu)化,成為提升網(wǎng)絡(luò)能效與可靠性的關(guān)鍵挑戰(zhàn)。本...

關(guān)鍵字: STM32 LoRa

在實(shí)時控制系統(tǒng)、高速通信協(xié)議處理及高精度數(shù)據(jù)采集等對時間敏感的應(yīng)用場景中,中斷響應(yīng)延遲的優(yōu)化直接決定了系統(tǒng)的可靠性與性能上限。STM32系列微控制器憑借其靈活的嵌套向量中斷控制器(NVIC)、多通道直接內(nèi)存訪問(DMA)...

關(guān)鍵字: STM32 DMA

數(shù)字電源技術(shù)向高功率密度、高效率與高動態(tài)響應(yīng)方向加速演進(jìn),STM32微控制器憑借其基于DSP庫的算法加速能力與對LLC諧振變換器的精準(zhǔn)控制架構(gòu),成為優(yōu)化電源動態(tài)性能的核心平臺。相較于傳統(tǒng)模擬控制或通用型數(shù)字控制器,STM...

關(guān)鍵字: STM32 數(shù)字電源

STM32微控制器憑借其針對電機(jī)控制場景的深度優(yōu)化,成為高精度、高可靠性驅(qū)動系統(tǒng)的核心選擇。相較于通用型MCU,STM32在電機(jī)控制領(lǐng)域的核心優(yōu)勢集中體現(xiàn)在FOC(磁場定向控制)算法的硬件加速引擎與PWM死區(qū)時間的動態(tài)補(bǔ)...

關(guān)鍵字: STM32 電機(jī)控制

無線充電技術(shù)加速滲透消費(fèi)電子與汽車電子領(lǐng)域,基于Qi協(xié)議的無線充電發(fā)射端開發(fā)成為智能設(shè)備能量補(bǔ)給的核心課題。傳統(tǒng)模擬控制方案存在響應(yīng)滯后、參數(shù)調(diào)整困難等問題,而基于STM32的數(shù)字PID控制結(jié)合FOD(Foreign O...

關(guān)鍵字: STM32 無線充電
關(guān)閉