本帖最后由 凡夫 于 2017-5-17 14:14 编辑
[mw_shl_code=c,true]static void bsp_InitKeyHard(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//如果有用到PB3 B4 A15就要用这句 释放JTAG IO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试
/* 第1步:打开GPIO时钟 */
RCC_APB2PeriphClockCmd(RCC_ALL_KEY, ENABLE);
/* 第2步:配置所有的按键GPIO为浮动输入模式(实际上CPU复位后就是输入状态) */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /* 输入浮空模式 */
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_K1;
GPIO_Init(GPIO_PORT_K1, &GPIO_InitStructure);
}
//A:
static uint8_t IsKeyDown2(void) {if ((GPIO_PORT_K1->IDR & GPIO_PIN_K1) == 1) return 1;else return 0;}
//B:
static uint8_t IsKeyDown1(void) {return GPIO_ReadInputDataBit(GPIO_PORT_K1,GPIO_PIN_K1);}
[/mw_shl_code]
现象:
A永远返回0,B可以根据IO状态正确返回。
疑问:
对比了B中GPIO_ReadInputDataBit的源码,A写的不够严谨,似乎是数据类型方面的问题,但不明白具体是什么问题。
望各位指点,谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>