stm32f10x之GPIO

1.GPIO的定义

GPIO的英文名字为General Purpose Input Output(通用输入/输出),是单片机中比较常用的引脚。

2.GPIO的配置模式

  1. 浮空输入
  2. 上拉输入
  3. 模拟输入
  4. 开漏输出
  5. 推挽输出
  6. 推挽复用功能
  7. 开漏复用功能

    控制的寄存器为:GPIOx_CRL(端口配置低寄存器)、GPIOx_CRH(端口配置高寄存器)。

3.GPIO的初始化结构体

typedef struct
 {   
 uint16_t GPIO_Pin;   /*!< Specifies the GPIO pins to be configured.   This parameter can be any value of @ref GPIO_pins_define */   
 GPIOSpeed_TypeDef GPIO_Speed; /*!< Specifies the speed for the selected pins.  This parameter can be a value of @ref GPIOSpeed_TypeDef */
 GPIOMode_TypeDef GPIO_Mode;   /*!< Specifies the operating mode for the selected pins.This parameter can be a value of @ref GPIOMode_TypeDef */ 
 }GPIO_InitTypeDef;

GPIO_Pin:指定的gpio的引脚。

GPIO_Speed:GPIO的速率(如果是输入模式的话这个可以忽略不填写)

GPIO_Mode:GPIO的模式(以上的7中模式之一)

4.GPIO点亮一个LED灯

1. 编程步骤

  • 开启指定GPIO的时钟
  • 初始化GPIO结构体
  • 调用GPIO_Init函数
  • 输出低电平(其中涉及到的函数可能是GPIO_ResetBits、GPIO_setBits或GPIO_WriteBit)

2. code示例

/**红灯**/
 #define LED1_GPIO_PORT GPIOB 
 #define LED1_GPIO_CLK RCC_APB2Periph_GPIOB 
 #define LED1_GPIO_PIN GPIO_Pin_5 
 /**绿灯**/ 
 #define LED2_GPIO_PORT GPIOB 
 #define LED2_GPIO_CLK RCC_APB2Periph_GPIOB
 #define LED2_GPIO_PIN GPIO_Pin_0 
 /**蓝灯**/ 
 #define LED3_GPIO_PORT GPIOB 
 #define LED3_GPIO_CLK RCC_APB2Periph_GPIOB 
 #define LED3_GPIO_PIN GPIO_Pin_1
int main(void) 
{
    //开启时钟 
    RCC_APB2PeriphClockCmd(LED3_GPIO_CLK, ENABLE); 
    //初始化gpio 
    GPIO_InitTypeDef GPIO_InitStruct; 
    GPIO_InitStruct.GPIO_Pin = LED3_GPIO_PIN; 
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz; 
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
     GPIO_Init(LED3_GPIO_PORT,&GPIO_InitStruct); 
    //输出低电平 
    GPIO_ResetBits(LED3_GPIO_PORT,LED3_GPIO_PIN); 
    while(1);
}

猜你喜欢

转载自blog.csdn.net/mnjlj_23nmk/article/details/79083402