为什么我按下按键后没有反应,是应为GPIO_ReadInputDataBit函数问题还是其他 void Key_Init() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOE,&GPIO_InitStructure); } int main() { Led_Init_My(); SysTick_init_My(72); Key_Init(); while(1) { if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==1) { delay_ms(10); GPIO_SetBits(GPIOC,GPIO_Pin_1); delay_ms(500); } else if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0) { delay_ms(10); GPIO_ResetBits(GPIOC,GPIO_Pin_1); delay_ms(500); } } } |
GPIO时钟开了没有?
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);
看你用了RCC_APB2PeriphResetCmd。
在if中延时做什么?去掉延时。
评分
查看全部评分
评分
查看全部评分
while(1)
{
GPIO_SetBits(GPIOC,GPIO_Pin_1);
delay_ms(500);
GPIO_ResetBits(GPIOC,GPIO_Pin_1);
delay_ms(500);
}
评分
查看全部评分
1延时没有必要
2C1接的是灯吗
3通过E2控制C1 看你key还蛮多的 换一个看看
1、浮空输入GPIO_IN_FLOATING ——浮空输入,可以做KEY识别,RX1
2、带上拉输入GPIO_IPU——IO内部上拉电阻输入
3、带下拉输入GPIO_IPD—— IO内部下拉电阻输入
评分
查看全部评分