色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

          作者: 時(shí)間:2016-11-26 來(lái)源:網(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è)位可以由軟件分別配置成多種模式。 ─ 輸入浮空 ─ 輸入上拉 ─ 輸入下拉 ─ 模擬輸入 ─ 開(kāi)漏輸出 ─ 推挽式輸出 ─ 推挽式復(fù)用功能 ─ 開(kāi)漏復(fù)用功能每個(gè)I/O端口位可以自由編程,然而I/0端口寄存器必須按32位字被訪問(wèn)(不允許半字或字節(jié)訪問(wèn))。GPIOx_BSRR和GPIOx_BRR寄存器允許對(duì)任何GPIO寄存器的讀/更改的獨(dú)立訪問(wèn);這樣,在讀和更改訪問(wèn)之間產(chǎn)生IRQ時(shí)不會(huì)發(fā)生危險(xiǎn)。

          本文引用地址:http://cafeforensic.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前必須進(jìn)行配置,注意復(fù)用功能,使能GPIO時(shí)鐘等。



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

          評(píng)論


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

          關(guān)閉