STM32 GPIO應(yīng)用筆記
①
②
③
④
⑤
⑥
⑦
⑧
1.1
關(guān)鍵是GPIO的引腳速度跟應(yīng)用匹配(推薦10倍以上?)。比如:
1.1.1
1.1.2
1.1.3
1.2
1.3
1.4
1.5
2
首先,一個(gè)外設(shè)經(jīng)過(guò)
對(duì)應(yīng)到外設(shè)的輸入輸出功能有下述三種情況:
一、外設(shè)對(duì)應(yīng)的管腳為輸出:需要根據(jù)外圍電路的配置選擇對(duì)應(yīng)的管腳為復(fù)用功能的推挽輸出或復(fù)用功能的開(kāi)漏輸出。
二、外設(shè)對(duì)應(yīng)的管腳為輸入:則根據(jù)外圍電路的配置可以選擇浮空輸入、帶上拉輸入或帶下拉輸入。
三、ADC對(duì)應(yīng)的管腳:配置管腳為模擬輸入。
如果把端口配置成復(fù)用輸出功能,則引腳和輸出寄存器斷開(kāi),并和片上外設(shè)的輸出信號(hào)連接。將管腳配置成復(fù)用輸出功能后,如果外設(shè)沒(méi)有被激活,那么它的輸出將不確定。
3
3.1
3.1.1
3.1.2
3.2
3.3
下面我就在做個(gè)拋磚引玉,根據(jù)ST手冊(cè)上的內(nèi)容,簡(jiǎn)單地綜述一下GPIO的功能:
一、共有8種模式,可以通過(guò)編程選擇:
模式7和模式8需根據(jù)具體的復(fù)用功能決定。
二、專門(mén)的寄存器(GPIOx_BSRR和GPIOx_BRR)實(shí)現(xiàn)對(duì)GPIO口的原子操作,即回避了設(shè)置或清除I/O端口時(shí)的“讀-修改-寫(xiě)”操作,使得設(shè)置或清除I/O端口的操作不會(huì)被中斷處理打斷而造成誤動(dòng)作。
三、每個(gè)GPIO口都可以作為外部中斷的輸入,便于系統(tǒng)靈活設(shè)計(jì)。
四、I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這有利于噪聲控制。
五、所有I/O口兼容CMOS和TTL,多數(shù)I/O口兼容5V電平。
六、大電流驅(qū)動(dòng)能力:GPIO口在高低電平分別為0.4V和VDD-0.4V時(shí),可以提供或吸收8mA電流;如果把輸入輸出電平分別放寬到1.3V和VDD-1.3V時(shí),可以提供或吸收20mA電流。
七、具有獨(dú)立的喚醒I/O口。
八、很多I/O口的復(fù)用功能可以重新映射。
九、GPIO口的配置具有上鎖功能,當(dāng)配置好GPIO口后,可以通過(guò)程序鎖住配置組合,直到下次芯片復(fù)位才能解鎖。此功能非常有利于在程序跑飛的情況下保護(hù)系統(tǒng)中其他的設(shè)備,不會(huì)因?yàn)槟承㊣/O口的配置被改變而損壞——如一個(gè)輸入口變成輸出口并輸出電流。
STM32第一個(gè)例子
/
#include "stm32f10x_lib.h"
GPIO_InitTypeDef GPIO_InitStructure;
void LED_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
評(píng)論