LPCOMP not working as expected

I want to use LPCOMP in nrf52832 to detect a rising edge of voltage. And my code is:

static void lpcomp_event_handler(nrf_lpcomp_event_t event)
{
	ret_code_t err_code;
    if (event == NRF_LPCOMP_EVENT_UP)
    {
     NRF_LOG_INFO("up!");					
    }
}
static void lpcomp_init(void)
{
    uint32_t                err_code;
    nrf_drv_lpcomp_config_t config;
	config.input =NRF_LPCOMP_INPUT_0; 
  	uint32_t ref = NRF_LPCOMP_INPUT_1;//NRF_LPCOMP_REF_SUPPLY_4_8
    config.hal.reference = (nrf_lpcomp_ref_t)ref;
    config.hal.detection = LPCOMP_ANADETECT_ANADETECT_Up;
    config.hal.hyst      = LPCOMP_HYST_HYST_Hyst50mV;
	
    err_code = nrf_drv_lpcomp_init(&config, lpcomp_event_handler);
    APP_ERROR_CHECK(err_code);
    nrf_drv_lpcomp_enable();
		
}

I set the reference as NRF_LPCOMP_INPUT_1 or NRF_LPCOMP_REF_SUPPLY_4_8, the event is not triggered only when the input pin is not connected to anything or grounded.

Even if it's connecting a wire or inputting a high level, it will continuously trigger events. It triggered too many rising edge events, this is very confusing for me.

I noticed this: when I use a voltmeter to measure the voltage at the input pin, it's not zero. Should I connect a pull-down resistor or do you have any other suggestions?

Related