我正在nRF51 DK上开发一个并发的BLE和Shockburst应用程序。一开始我试着独自运行Shockbust。它进行了编译,并且没有把它载入董事会的可能性。但当我运行它时,它就不起作用了。我想我发现了这个错误,但我不知道如何解决:
nrf_esb_init()函数不返回。为了测试,我用LED包围了这个功能。LED_1亮着,所以函数被调用了,但是LED_2从不闪现:
void esb_wake(void) {
nrf_gpio_pin_toggle(LED_1); // flash
nrf_esb_init(NRF_ESB_MODE_PTX);
nrf_gpio_pin_toggle(LED_2); //does not flash
nrf_esb_set_base_address_0(addr0);
nrf_esb_set_base_address_1(addr1);
nrf_esb_set_channel(rf_channel);
uint32_t err_code = timeslot_sd_init();
APP_ERROR_CHECK(err_code);
nrf_esb_enable();
nrf_esb_set_max_number_of_tx_attempts(1); }
我使用SDK10.0和Softdevice s310。
有谁知道怎么解决我的问题吗?
发布于 2016-09-09 12:52:29
我自己解决了这个问题:
就像我说的,我使用的是软件设备,这就是邪恶。软件设备是“董事会的主人”。ShockBurst不是软设备的一部分。所以当我使用外部代码时,我不得不告诉softdevice。解决方案是在时隙启动之前调用nrf_esb_init()。因此,在NRF_RADIO_CALLBACK_SIGNAL_TYPE_START情况下,我将函数移到时隙事件处理程序中。
https://stackoverflow.com/questions/39251529
复制相似问题