新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32學(xué)習(xí)筆記之GPIO

STM32學(xué)習(xí)筆記之GPIO

作者: 時(shí)間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
GPIO功能描述

每個(gè)GPI/O端口有兩個(gè)32位配置寄存器(GPIOx_CRL,GPIOx_CRH),兩個(gè)32位數(shù)據(jù)寄存器(GPIOx_IDR和GPIOx_ODR),一個(gè)32位置位/復(fù)位寄存器(GPIOx_BSRR),一個(gè)16位復(fù)位寄存器(GPIOx_BRR)和一個(gè)32位鎖定寄存器(GPIOx_LCKR)。根據(jù)數(shù)據(jù)手冊(cè)中列出的每個(gè)I/O端口的特定硬件特征, GPIO端口的每個(gè)位可以由軟件分別配置成多種模式。 ─ 輸入浮空 ─ 輸入上拉 ─ 輸入下拉 ─ 模擬輸入 ─ 開漏輸出 ─ 推挽式輸出 ─ 推挽式復(fù)用功能 ─ 開漏復(fù)用功能每個(gè)I/O端口位可以自由編程,然而I/0端口寄存器必須按32位字被訪問(不允許半字或字節(jié)訪問)。GPIOx_BSRR和GPIOx_BRR寄存器允許對(duì)任何GPIO寄存器的讀/更改的獨(dú)立訪問;這樣,在讀和更改訪問之間產(chǎn)生IRQ時(shí)不會(huì)發(fā)生危險(xiǎn)。

本文引用地址:http://m.butianyuan.cn/article/201611/321705.htm


void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

#ifdef USE_STM3210C_EVAL

GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE);


GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);
#elif defined USE_STM3210B_EVAL

GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);
#endif


GPIO_InitStructure.GPIO_Pin = USARTy_RxPin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(USARTy_GPIO, &GPIO_InitStructure);


GPIO_InitStructure.GPIO_Pin = USARTz_RxPin;
GPIO_Init(USARTz_GPIO, &GPIO_InitStructure);


GPIO_InitStructure.GPIO_Pin = USARTy_TxPin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(USARTy_GPIO, &GPIO_InitStructure);


GPIO_InitStructure.GPIO_Pin = USARTz_TxPin;
GPIO_Init(USARTz_GPIO, &GPIO_InitStructure);


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//GPIO_Init(GPIOB, &GPIO_InitStructure);

}

#ifndef __LED_H
#define __LED_H

#include "stm32f10x.h"

#define LED1On()GPIOA->BSRR = GPIO_Pin_4
#define LED1Off()GPIOA->BRR = GPIO_Pin_4
#define LED2On()GPIOA->BSRR = GPIO_Pin_5
#define LED2Off()GPIOA->BRR = GPIO_Pin_5
#define LED3On()GPIOA->BSRR = GPIO_Pin_6
#define LED3Off()GPIOA->BRR = GPIO_Pin_6
#define LED4On()GPIOA->BSRR = GPIO_Pin_7
#define LED4Off()GPIOA->BRR = GPIO_Pin_7

#endif

PS:在使用GPIO前必須進(jìn)行配置,注意復(fù)用功能,使能GPIO時(shí)鐘等。



關(guān)鍵詞: STM32學(xué)習(xí)筆記GPI

評(píng)論


技術(shù)專區(qū)

關(guān)閉