#define KEY1 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)
#define KEY2 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)
#define KEY3 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)
void Key_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化
GPIO_ResetBits(GPIOB,GPIO_Pin_4);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
}
按键按下时低电平的。
debug的时候,按下GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_xx)读取的总是1。
(这个程序没写什么,空白程序,只是下面按键检测和main函数里面的检测循环无关紧要就不贴上来了,主要是debug读取不了这个IO状态,按键都按下了,GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_xx)这个还是为1)
而同样的程序初始化,在另外一个程序debug的时候却能正常读取0,究竟是哪里出问题了。
莫非是时钟?因为用的是内部晶振。但是另外一个程序也是内部晶振也行啊 |