软件中断,可以用于在应用程序中实现异步事件处理、任务调度等功能;
下面是例子代码;
static nrf_swi_t my_swi;
void swi_event_handler(nrf_swi_t swi, nrf_swi_flags_t flags)
{
/* If “my_swi” was triggered and flag #3 is present… /
if ((swi == my_swi) && (flags & (1 << 3)))
{
/ Do something. */
}
return;
}
/*
…
*/
ret_code_t err_code;
nrf_swi_t my_swi;
/* Initialize the library. */
err_code = nrf_drv_swi_init();
APP_ERROR_CHECK(err_code);
/* Allocate and setup one SWI. */
err_code = nrf_drv_swi_alloc(&my_swi, swi_event_handler, APP_IRQ_PRIORITY_LOW);
APP_ERROR_CHECK(err_code);
while (true)
{
/* Trigger SWI with flag #3. */
nrf_drv_swi_trigger(my_swi, 3);
/* Wait for a second. */
nrf_delay_ms(1000);
}
如果对这个NRF52 NRF53 NRF54感兴趣,请评论区联系我们,或者 021-54362893 与我们联系;