【BLE 5.3无线MCU CH582】7、按键——GPIO外部中断
<p>系列文章:</p><p><a href="https://bbs.eeworld.com.cn/thread-1195192-1-1.html" target="_blank">【BLE 5.3无线MCU CH582】1、初识CH582开发板(开箱)</a></p>
<p><a href="https://bbs.eeworld.com.cn/thread-1195464-1-1.html" target="_blank">【BLE 5.3无线MCU CH582】2、MounRiver IDE初体验</a></p>
<p><a href="https://bbs.eeworld.com.cn/thread-1196099-1-1.html#pid3126477" target="_blank">【BLE 5.3无线MCU CH582】3、非阻塞方式点灯</a></p>
<p><a href="https://bbs.eeworld.com.cn/thread-1196188-1-1.html" target="_blank">【BLE 5.3无线MCU CH582】4、串口不定长数据接收</a></p>
<p><a href="https://bbs.eeworld.com.cn/thread-1196777-1-1.html" target="_blank">【BLE 5.3无线MCU CH582】5、硬件I2C驱动0.96吋OLED</a></p>
<p><a href="https://bbs.eeworld.com.cn/thread-1196846-1-1.html" target="_blank">【BLE 5.3无线MCU CH582】6、pwm呼吸灯</a></p>
<p> </p>
<p><span style="font-size:24px;">1、硬件连接</span></p>
<p> 可以看出,PB4接按键,按键按下时下拉到GND,因此可以通过判断<strong>下降沿</strong>,判断按键是否按下。</p>
<p><span style="font-size:24px;">2、代码实现</span></p>
<pre>
<code>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;
}
}</code></pre>
<p><span style="font-size:26px;">3、测试</span></p>
<p> </p>
<p> </p>
<p> </p>
<p>谢谢分享,期待后续</p>
页:
[1]