有没有CH579 TMOS系统的GPIO中断例程

有没有CH579 TMOS系统的GPIO中断例程,我需要读取编码器

可以在中断服务程序里面 置标志位,然后在主循环里关中断后去查标志位


如:

void gpio_interrupt_init(void) {
    //初始化位输入上拉
    GPIOB_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);
    //开启下降沿中断
    GPIOB_ITModeCfg(GPIO_Pin_8,GPIO_ITMode_FallEdge);
    //开启GPIO的睡眠唤醒,如果需要的话
    PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_GPIO_WAKE ); 
    //开启GPIO中断
    NVIC_EnableIRQ( GPIO_IRQn );
}
//中断服务程序
void GPIO_IRQHandler(void) {
    GPIOB_ClearITFlagBit(GPIO_Pin_8);
    button_detected = true;
}

然后在 主循环里面查这个标志位然后调用tmos的相关api:

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 );
}





按照上述方法对外部脉冲输入进行检测,在主循环里面查标志位然后调用tmos的相关api对外部脉冲进行计数,在u32 CH57X_LowPower( u32 time )函数中设备标志位唤醒设备,但在BLE\Peripheral工程下开启SLEEP和看门狗的情况下,会出现看门狗复位的情况。

image.pngimage.png


根据您提供的工程,将翻转io放到中断中进行操作。只要触发中断就可以读取脉冲进行计数。


只有登录才能回复,可以选择微信账号登录