update touch sensor examples

This commit is contained in:
fuzhibo
2021-08-24 21:38:12 +08:00
committed by laokaiyao
parent 057b9d61b5
commit 3ca9da0386
53 changed files with 134 additions and 388 deletions

View File

@@ -62,6 +62,7 @@ static SemaphoreHandle_t rtc_touch_mux = NULL;
Touch Pad
---------------------------------------------------------------*/
#if CONFIG_IDF_TARGET_ESP32S2
/** Workaround for scan done interrupt issue. */
static void touch_pad_workaround_isr_internal(void *arg)
{
@@ -81,6 +82,7 @@ static void touch_pad_workaround_isr_internal(void *arg)
}
}
}
#endif
esp_err_t touch_pad_isr_register(intr_handler_t fn, void *arg, touch_pad_intr_mask_t intr_mask)
{
@@ -104,13 +106,19 @@ esp_err_t touch_pad_isr_register(intr_handler_t fn, void *arg, touch_pad_intr_ma
if (intr_mask & TOUCH_PAD_INTR_MASK_TIMEOUT) {
en_msk |= RTC_CNTL_TOUCH_TIMEOUT_INT_ST_M;
}
#if SOC_TOUCH_PROXIMITY_MEAS_DONE_SUPPORTED
if (intr_mask & TOUCH_PAD_INTR_MASK_PROXI_MEAS_DONE) {
en_msk |= RTC_CNTL_TOUCH_APPROACH_LOOP_DONE_INT_ST_M;
}
#endif
esp_err_t ret = rtc_isr_register(fn, arg, en_msk);
#if CONFIG_IDF_TARGET_ESP32S2
/* Must ensure: After being registered, it is executed first. */
if ( (ret == ESP_OK) && (reg_flag == false) && (intr_mask & (TOUCH_PAD_INTR_MASK_SCAN_DONE | TOUCH_PAD_INTR_MASK_TIMEOUT)) ) {
rtc_isr_register(touch_pad_workaround_isr_internal, NULL, RTC_CNTL_TOUCH_SCAN_DONE_INT_ST_M | RTC_CNTL_TOUCH_TIMEOUT_INT_ST_M);
reg_flag = true;
}
#endif
return ret;
}