1、GPIO 工作模式
(1)輸入模式(模擬、上拉、下拉、浮空)
輸入模式可以配置為模擬、上拉、下拉以及浮空模式。上拉和下拉輸入很好理解,默認的電平由上拉或者下拉決定。浮空輸入的電平是不確定的,完全由外部的輸入決定,一般接按鍵的時候可以使用這個模式。模擬輸入則用于 ADC 采集。
(2)輸出模式(推挽/開漏)
在輸出模式中,推挽模式時雙 MOS 管以推挽方式工作,輸出數據寄存器GPIOx_ODR 可控制 I/O 輸出高低電平。開漏模式時,只有 N-MOS 管工作,輸出數 據 寄 存 器 可 控 制 I/O 輸 出 高 阻 態 或 低 電 平 。
(3)復用功能(推挽/開漏)
復用功能模式中,輸出使能,輸出速度可配置,可工作在開漏及推挽模式,但是輸出信號源于其它外設,輸出數據寄存器 GPIOx_ODR 無效;輸入可用,通過輸入數據寄存器可獲取 I/O 實際狀態,但一般直接用外設的寄存器來獲取該數據信號。
(4)模擬輸入輸出(上下拉無影響)
模擬輸入輸出模式中,雙 MOS 管結構被關閉,施密特觸發器停用,上/下拉也被禁止。其它外設通過模擬通道進行輸入輸出。

2、GPIO驅動源碼
#include "stm32f10x.h"
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定義結構體變量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//開啟時鐘
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //選擇你要設置的IO口
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //設置推挽輸出模式
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //設置傳輸速率
GPIO_Init(GPIOC,&GPIO_InitStructure); //初始化GPIO
GPIO_SetBits(GPIOC,GPIO_Pin_0); //將LED端口拉高,熄滅所有LED
}
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定義結構體變量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//開啟時鐘
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //選擇你要設置的IO口
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; //下拉輸入
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //設置傳輸速率
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化GPIO
}
int main( void )
{
LED_Init();
KEY_Init();
while(1)
{
//如果按鍵按下(不進行消抖,因為只是測試GPIOA_0是否拉低)
if( GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) )
{
GPIO_ResetBits(GPIOC,GPIO_Pin_0);
}
else
{
GPIO_SetBits(GPIOC,GPIO_Pin_0);
}
}
}
--END--
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
adc
+關注
關注
100文章
7511瀏覽量
555990 -
模擬
+關注
關注
7文章
1447瀏覽量
85385 -
電平
+關注
關注
5文章
372瀏覽量
41605
發布評論請先 登錄
相關推薦
熱點推薦
淺談GPIO的操作
本帖最后由 芯靈思FAE 于 2016-7-31 12:48 編輯
淺談GPIO的操作很久很久以前,我們如果在Linux系統下操作GPIO是這樣的......
發表于 07-31 12:47
GPIO的操作步驟
前提1.該筆記為本人學習時做的一些筆記,僅為個人學習只用,可能存在錯誤或缺陷2.本人是在 正點原子平臺學習,具有大量視頻,講解清楚一、GPIO 的操作步驟1) 使能 IO 口時鐘。調用函數為
發表于 08-02 10:25
STM32 GPIO使用操作步驟
STM32 GPIO使用超強總結STM32GPIO使用操作步驟:1. 使能GPIO對應的外設時鐘例如://使能GPIOA、GPIOB、GPIOC對應的外設時鐘RCC_APB2Perip
發表于 08-12 07:31
基于STM32的GPIO操作
1.基于STM32的GPIO操作理解,使用的是STM32CubeMx生成軟件,目的實現2個燈的流水,使用的是STM32G473這個芯片。硬件原理圖如下:LED1對應的PA1,LED2對應的PA0
發表于 08-16 08:24
嵌入式linux驅動對gpio的基本操作
文章目錄代碼驅動層代碼應用層代碼 測試驅動Makefile這里記錄的是嵌入式linux驅動對gpio的基本操作。實現的內容是:gpio驅動編寫>&
發表于 11-05 07:59
GPIO操作方式
2020年,都全面奔小康了,Linux驅動也終于NiMa不用像2008年那么惡心了,大部分產品的研發可以直接使用廠家提供的內核,通過修改設備樹完成。特殊情況下,還是要摸一下驅動的,本文只介紹GPIO
發表于 12-24 07:09
STM32基本GPIO操作步驟
STM32基本GPIO操作:按鍵輸入(掃描+外部中斷)本文章向大家介紹STM32基本GPIO操作:按鍵輸入(掃描+外部中斷),主要包括STM32基本
發表于 02-23 07:37
英創信息技術工控主板快速GPIO操作介紹
GPIO管腳所呈現的電平均為高電平。面對豐富的GPIO資源,許多客戶希望將GPIO利用起來做一下其他的應用,比如模擬SPI接口,I2C接口,以及一些總線時序等,下面就來看看GPIO的
stm32單片機基于hal庫對對GPIO的操作
32單片機對GPIO的操作和51單片機對io口的操作是一樣的,常用的有三個,輸出,io口至高至低,輸入,檢查測io口的高低電平,取反,用于閃爍處理。/*讀取io口電平
發表于 11-26 20:06
?1次下載
STM32基本GPIO操作:按鍵輸入(掃描+外部中斷)
STM32基本GPIO操作:按鍵輸入(掃描+外部中斷)本文章向大家介紹STM32基本GPIO操作:按鍵輸入(掃描+外部中斷),主要包括STM32基本
發表于 12-29 19:27
?13次下載
什么是GPIO操作
評論