我用PB5 口位做的微动开关按键输入, 初始化配置是浮动输入上拉无中断, 按键接了10K 上拉电阻, 可以扫描到按键。 但是在调试的时候有句语句执行不了, 直接跳过。
void scan_fuction(void)//扫描按键
{
BitStatus bit_status = GPIO_ReadInputPin(GPIOB, GPIO_PIN_5);
if (bit_status == RESET) //SET or RESET
{
Soft_DelayMs(30);//延时
clear_WWDG();
BitStatus bit_status = GPIO_ReadInputPin(GPIOB, GPIO_PIN_5);
if (bit_status == RESET)
{
ModeF_k++;
Soft_DelayMs(30);
sound();
clear_WWDG();
if( ModeF_k>8)
{
ModeF_k=0;
}
// while(!GPIO_ReadInputPin(GPIOB, GPIO_PIN_5));
while (bit_status == SET )
{
clear_WWDG();
BitStatus bit_status = GPIO_ReadInputPin(GPIOB, GPIO_PIN_5);
}
}
else
clear_WWDG();
}
}
大家请看, 是红色 while 语句在==SET 的时候不能正确执行不能进入循环, ==RESET的时候可以正确跑到循环里, 我用蓝色语句代替 可以检测到按键出高才跳出, 但是中间插入不了 clear_WWDG(); 。
请大家帮忙分析。 谢谢。
PB5 口位的 1,0 变化能在 PB_IDR 里正确看到, 仿真的时候,但是就是==SET 的时候不能。
|