有沒有CH579 TMOS系統(tǒng)的GPIO中斷例程,我需要讀取編碼器
熱門產(chǎn)品 :
CH182: 以太網(wǎng)PHY收發(fā)器芯片
有沒有CH579 TMOS系統(tǒng)的GPIO中斷例程,我需要讀取編碼器
可以在中斷服務(wù)程序里面 置標志位,然后在主循環(huán)里關(guān)中斷后去查標志位
如:
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?); } //中斷服務(wù)程序 void?GPIO_IRQHandler(void)?{ ????GPIOB_ClearITFlagBit(GPIO_Pin_8); ????button_detected?=?true; }
然后在 主循環(huán)里面查這個標志位然后調(diào)用tmos的相關(guān)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?); }
按照上述方法對外部脈沖輸入進行檢測,在主循環(huán)里面查標志位然后調(diào)用tmos的相關(guān)api對外部脈沖進行計數(shù),在u32 CH57X_LowPower( u32 time )函數(shù)中設(shè)備標志位喚醒設(shè)備,但在BLE\Peripheral工程下開啟SLEEP和看門狗的情況下,會出現(xiàn)看門狗復(fù)位的情況。
根據(jù)您提供的工程,將翻轉(zhuǎn)io放到中斷中進行操作。只要觸發(fā)中斷就可以讀取脈沖進行計數(shù)。