有没有CH579 TMOS系统的GPIO中断例程,我需要读取编码器
热门产品 :
CH32L103: 32位PDUSB低功耗单片机
有没有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和看门狗的情况下,会出现看门狗复位的情况。
根据您提供的工程,将翻转io放到中断中进行操作。只要触发中断就可以读取脉冲进行计数。