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