一、用到的知識
1. 位操作:直接訪問一個位的地址。(可以在“sys.h”頭文件中找到,并且使用之前要包含“sys.h”頭文件)
2. 讀取IO口電平函數(shù)(既可以使用位操作,又可以使用庫函數(shù)操作)
二、操作流程
1. 使能相對應(yīng)IO口的時鐘(調(diào)用RCC_APB2PeriphClockCmd()函數(shù))
2. 初始化IO口模式為上/下拉輸入。(調(diào)用GPIO_Init()函數(shù))
3. 掃描IO口的電平(調(diào)用GPIO_ReadInputDataBit()函數(shù))
#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é?à-ê?è?}
新聞熱點(diǎn)
疑難解答