|
|
|
8263 0 1 0 |
|
Опции темы | Поиск в этой теме |
20.01.2019, 20:51 | 1 |
Seraphic/8X
Регистрация: 21.05.2015 Последняя активность: 19.01.2020 17:56 Адрес: Longyearbyen
Сообщений: 1641
Сказал(а) спасибо: 263
Поблагодарили: 820 раз(а) в 394 сообщениях
|
nRF52840-MDK помогите советом
Есть вот такой модуль, работал кто-нибудь с nRF52840? Не могу сделать пробуждение по NFC, чтобы срабатывал по метке. Сам NFC в спячке работает, метку видит и, в целях отладки, в лог срет. Но процессор не просыпается по событию, хотя соответсвующий триггер настроен. Пробуждаю по содержимому адресов памяти NFC.
Код:
if (*(uint32_t *)0x10000130ul == 0x8ul){ if (*(uint32_t *)0x10000134ul == 0x0ul){ return true; } if (*(uint32_t *)0x10000134ul == 0x1ul){ return true; } if (*(uint32_t *)0x10000134ul == 0x2ul){ return true; } if (*(uint32_t *)0x10000134ul == 0x3ul){ return true; } Код:
typedef struct { nrfx_timer_event_handler_t handler; void * context; nrfx_drv_state_t state; } timer_control_block_t; static timer_control_block_t m_cb[NRFX_TIMER_ENABLED_COUNT]; nrfx_err_t nrfx_timer_init(nrfx_timer_t const * const p_instance, nrfx_timer_config_t const * p_config, nrfx_timer_event_handler_t timer_event_handler) { timer_control_block_t * p_cb = &m_cb[p_instance->instance_id]; #ifdef SOFTDEVICE_PRESENT NRFX_ASSERT(p_instance->p_reg != NRF_TIMER0); #endif NRFX_ASSERT(p_config); NRFX_ASSERT(timer_event_handler); nrfx_err_t err_code; if (p_cb->state != NRFX_DRV_STATE_UNINITIALIZED) { err_code = NRFX_ERROR_INVALID_STATE; NRFX_LOG_WARNING("Function: %s, error code: %s.", __func__, NRFX_LOG_ERROR_STRING_GET(err_code)); return err_code; } NRFX_ASSERT(NRF_TIMER_IS_BIT_WIDTH_VALID(p_instance->p_reg, p_config->bit_width)); //lint -restore p_cb->handler = timer_event_handler; p_cb->context = p_config->p_context; uint8_t i; for (i = 0; i < p_instance->cc_channel_count; ++i) { nrf_timer_event_clear(p_instance->p_reg, nrf_timer_compare_event_get(i)); } NRFX_IRQ_PRIORITY_SET(nrfx_get_irq_number(p_instance->p_reg), p_config->interrupt_priority); NRFX_IRQ_ENABLE(nrfx_get_irq_number(p_instance->p_reg)); nrf_timer_mode_set(p_instance->p_reg, p_config->mode); nrf_timer_bit_width_set(p_instance->p_reg, p_config->bit_width); nrf_timer_frequency_set(p_instance->p_reg, p_config->frequency); p_cb->state = NRFX_DRV_STATE_INITIALIZED; err_code = NRFX_SUCCESS; NRFX_LOG_INFO("Function: %s, error code: %s.", __func__, NRFX_LOG_ERROR_STRING_GET(err_code)); return err_code; } |