一、用到的知識
1. 位操作:直接訪問一個位的地址。(可以在“sys.h”頭文件中找到,并且使用之前要包含“sys.h”頭文件)
2. 讀取IO口電平函數(既可以使用位操作,又可以使用庫函數操作)
二、操作流程
1. 使能相對應IO口的時鐘(調用RCC_APB2PeriphClockCmd()函數)
2. 初始化IO口模式為上/下拉輸入。(調用GPIO_Init()函數)
3. 掃描IO口的電平(調用GPIO_ReadInputDataBit()函數)
#include "key.h"#define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)#define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)#define WAKE GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)void Key_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//PE3,PE4 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//PA0 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOE,&GPIO_InitStructure);//PE3é?à-ê?è? GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOE,&GPIO_InitStructure);//PE4é?à-ê?è? GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure);//PE3é?à-ê?è?}
新聞熱點
疑難解答