中断配置及服务程序如下
void gpio_interrupt_init(void) { //初始化位输入上拉 GPIOB_ModeCfg(GPIO_Pin_13, GPIO_ModeIN_PU); //开启下降沿中断 GPIOB_ITModeCfg(GPIO_Pin_13,GPIO_ITMode_FallEdge); //开启GPIO的睡眠唤醒,如果需要的话 PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_GPIO_WAKE ); //开启GPIO中断 NVIC_EnableIRQ( GPIO_IRQn ); } //中断服务程序 void GPIO_IRQHandler(void) { GPIOB_ClearITFlagBit(GPIO_Pin_13); button_detected = true; }
uint32_t irq_status; while(1) { TMOS_SystemProcess( ); SYS_DisableAllIrq( &irq_status ); if( true == button_detected ) { tmos_set_event( Peripheral_TaskID, BUTTON_EVENT); button_detected = false; } SYS_RecoverIrq( irq_status ); }
热门产品 :
CH585: 集成高速USB和NFC的蓝牙MCU