【BLE 5.3无线MCU CH582】7、按键——GPIO外部中断
[复制链接]
系列文章:
【BLE 5.3无线MCU CH582】1、初识CH582开发板(开箱)
【BLE 5.3无线MCU CH582】2、MounRiver IDE初体验
【BLE 5.3无线MCU CH582】3、非阻塞方式点灯
【BLE 5.3无线MCU CH582】4、串口不定长数据接收
【BLE 5.3无线MCU CH582】5、硬件I2C驱动0.96吋OLED
【BLE 5.3无线MCU CH582】6、pwm呼吸灯
1、硬件连接
可以看出,PB4接按键,按键按下时下拉到GND,因此可以通过判断下降沿,判断按键是否按下。
2、代码实现
static uint8_t KeyState=0;
void KeyInit(void)
{
GPIOB_ModeCfg( GPIO_Pin_4, GPIO_ModeIN_PU);
GPIOB_ITModeCfg( GPIO_Pin_4, GPIO_ITMode_FallEdge );
PFIC_EnableIRQ( GPIO_B_IRQn ); //使能gpiob中断
}
void KeyPolling(void)
{
if(KeyState)
{
KeyState=0;
printf("key press\r\n");
}
}
__INTERRUPT
__HIGH_CODE
void GPIOB_IRQHandler(void)
{
if(GPIOB_ReadITFlagBit(GPIO_Pin_4)) //判断pb4有中断发生
{
GPIOB_ClearITFlagBit(GPIO_Pin_4);//清除中断位
KeyState=1;
}
}
3、测试
|