|
|
| ||||||||
|
|
|
10523
0
1
0
|
|
Опции темы | Поиск в этой теме |
|
1
|
|
Seraphic/8X
Регистрация: 21.05.2015 Последняя активность: 19.01.2020 17:56
Сообщений: 1641
Сказал(а) спасибо: 263
Поблагодарили: 820 раз(а) в 394 сообщениях
|
Есть вот такой модуль, работал кто-нибудь с 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;
}
|
|
|
|