这应是蓝牙的Blink了吧,我以前实现过USB鼠标,应该没差太多.(自我安慰的开头)
这不一样有VID PID嘛,跟USB一样一样的.

先从main函数看下来.
/**@brief Function for application main entry.
*/
int main(void)
{
bool erase_bonds;
// Initialize.
log_init();
timers_init();
buttons_leds_init(&erase_bonds);
ble_stack_init();
scheduler_init();
gap_params_init();
gatt_init();
advertising_init();
services_init();
sensor_simulator_init();
conn_params_init();
peer_manager_init();
// Start execution.
NRF_LOG_INFO("HID Mouse example started.
");
timers_start();
advertising_start(erase_bonds);
// Enter main loop.
for (;;)
{
app_sched_execute();
if (NRF_LOG_PROCESS() == false)
{
power_manage();
}
}
}
第一步初始化LOG,LOG怎么用呢,要不用RTT要不用UART,我比较习惯用RTT调试.所以打开RTT.

然后一个LOG都见不到,啊!求助工具吧,原来还要使能.

我开到DEBUG等级,调好颜色,开始再试试.

坑的第二发,原来每个工程有自己的config文件.千万别打开错了.

当配置好是RTT调试时候,再来一次.终于走上DEBUG的正确路上了.

连接上就这样,DEBUG的信息也太少了吧.

然后第二个函数是定时器的初始化.定时器是什么玩意不难想象.里面函数特别多,为了节约时间,当然是从官网了解.
然后...翻车了.这个不是没参数吗,怎么会有参数呢.

原来是SDK太新,东西移动到config.h里面配置了.init不用参数了.然后定时器自己也有Log开来看看.

然而没有反应.定时器原来函数要的QUEUE_SIZE在这里.

其他没找到也不知道是不是弃用了.从名字可以知道是监控电池电量的.中断回调是battery_level_meas_timeout_handler,周期定时.定时周期是...
static void timers_init(void)
{
ret_code_t err_code;
err_code = app_timer_init();
APP_ERROR_CHECK(err_code);
// Create battery timer.
err_code = app_timer_create(&m_battery_timer_id,
APP_TIMER_MODE_REPEATED,
battery_level_meas_timeout_handler);
APP_ERROR_CHECK(err_code);
}
的原来定时周期还要后面看到app_timer_start再定义,那就算了.

接下来的buttons_leds_init不用说废话,我也懒得进去了,但是下面的ble_stack_init应该是我研究的重点!然后继续下去,HardFault了,我擦.

然后发现无处可打断点,判断是优化等级太高了,调到不优化方便调试.改变了优化程度,就可以到这里.看到里面全是SoftDevice API.因为是sd开头的,不是我一本正经敢胡说八道,真有哦.

只要看着文档没有不懂得东西.但是刚开始还是很失败啊,学一下文档吧,返回基础.