uint32_t nrf_drv_ppi_uninit(void) { ret_code_t err_code = NRF_SUCCESS; uint32_t mask = NRF_PPI_ALL_APP_GROUPS_MASK; nrf_ppi_channel_group_t group; if (m_drv_state == NRF_DRV_STATE_UNINITIALIZED) { err_code = NRF_ERROR_INVALID_STATE; NRF_LOG_WARNING("Function: %s, error code: %s.\r\n", (uint32_t)__func__, (uint32_t)ERR_TO_STR(err_code)); return err_code; } m_drv_state = NRF_DRV_STATE_UNINITIALIZED; // Disable all channels and groups nrf_ppi_channels_disable(NRF_PPI_ALL_APP_CHANNELS_MASK); for (group = NRF_PPI_CHANNEL_GROUP0; mask != 0; mask &= ~group_to_mask(group), group++) { if (mask & group_to_mask(group)) { nrf_ppi_channel_group_clear(group); } } channel_allocated_clr_all(); group_allocated_clr_all(); NRF_LOG_INFO("Function: %s, error code: %s.\r\n", (uint32_t)__func__, (uint32_t)ERR_TO_STR(err_code)); return err_code; }
uint32_t nrf_drv_ppi_uninit(void) { uint32_t mask = NRF_PPI_ALL_APP_GROUPS_MASK; nrf_ppi_channel_group_t group; if (m_drv_state == NRF_DRV_STATE_UNINITIALIZED) { return NRF_ERROR_INVALID_STATE; } m_drv_state = NRF_DRV_STATE_UNINITIALIZED; // Disable all channels and groups nrf_ppi_channels_disable(NRF_PPI_ALL_APP_CHANNELS_MASK); for (group = NRF_PPI_CHANNEL_GROUP0; mask != 0; mask &= ~group_to_mask(group), group++) { if(mask & group_to_mask(group)) { nrf_ppi_channel_group_clear(group); } } channel_allocated_clr_all(); group_allocated_clr_all(); return NRF_SUCCESS; }