gpio检测高电平

@admin  April 26, 2017

请输入图片描述

include"stm32f10x_lib.h"

GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO结构体对象
void MY_GPIO_Init(void) //GPIO初始化函数
{

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);      //使能GPIOA端口的时钟信号

    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;            //构造一个16bits的数值,赋值给GPIO_Pin ,使用 GPIOA_1做输出指示    
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;   //设置GPIOA_1的工作状态,推挽输出
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;  //设置GPIOA_1的工作速度,50MHz
    GPIO_Init(GPIOA,&GPIO_InitStructure);            //初始化GPIOA_1

    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;          //构造一个16bits的数值,赋值给GPIO_Pin,使用GPIOA_2做输入检测
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;           //设置GPIOA_2的工作状态,下拉输入
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;       //设置GPIOA_2的工作速度,50MHz,(输入无需此设置,设置如此亦无影响)
    GPIO_Init(GPIOA,&GPIO_InitStructure);                   //初始化 GPIOA_2

}
main()
{ u8 read=0x00;
MY_GPIO_Init(); //初始化GPIO端口
while(1)
{ read=GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2); //读取IO口状态

  if( read==0x01 )      //若GPIOA_2为1
       {
            GPIO_SetBits(GPIOA,GPIO_Pin_1);         //GPIOA_1  为高电平,LED灯亮
          }
   else
      {
            GPIO_ResetBits(GPIOA,GPIO_Pin_1);       //GPIOA_1   为低电平,LED灯灭
          }
}

}


添加新评论