新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32學習筆記之GPIO

        STM32學習筆記之GPIO

        作者: 時間:2016-11-26 來源:網絡 收藏
        GPIO功能描述

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

        本文引用地址:http://www.104case.com/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前必須進行配置,注意復用功能,使能GPIO時鐘等。



        關鍵詞: STM32學習筆記GPI

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 华安县| 两当县| 鄂尔多斯市| 苏尼特右旗| 铜梁县| 民和| 林州市| 蒲城县| 博爱县| 修武县| 成都市| 岳阳县| 扎囊县| 南部县| 资中县| 防城港市| 徐闻县| 青铜峡市| 双城市| 聂拉木县| 会昌县| 静乐县| 长武县| 南京市| 甘泉县| 巢湖市| 静海县| 浠水县| 大宁县| 泰和县| 玛曲县| 阿拉善左旗| 临潭县| 肃宁县| 驻马店市| 刚察县| 南京市| 光泽县| 南召县| 仙桃市| 利津县|