3.SDK架构
Dialog Semiconductoryabo国际娱乐为DA14531、DA14585和DA14586提供的SDK包含以下内容:
片上外设的驱动程序。
蓝牙LE配置文件实现。
演示如何使用片上外设和蓝牙LE栈api的示例项目。
详细描述可用api的文档。
用于创建二进制文件的各种实用程序和工具。
请注意
蓝牙LE栈(主机和控制器)包含在DA145xx设备的ROM中。
以下部分描述SDK6的结构和体系结构。
3.1.目录结构
SDK根目录包含以下目录:
二进制文件包含存储在host_apps目录中的PC应用程序的可执行二进制文件,以及用于生产测试工亚博国际官网平台网址具固件的二进制文件。
配置包含smartsnippet工具的DA14585/586/531配置文件。
医生包含详细说明可用api和SDK许可文件的文档。
项目包含示例项目。
sdk包含SDK的核心文件。
third_party包含SDK中使用的第三方源文件。
公用事业公司包含补充SDK的实用程序和工具。
3.2.体系结构
DA14585/586/531软件平台利用了一个小而高效的实时内核。蓝牙LE栈利用了实时内核提供的服务。内核提供了任务、消息、事件和动态内存分配功能。当一个任务试图向另一个任务发送消息时,任务与推送到队列中的消息进行通信。计时器和其他硬件事件也将事件推入队列。从主循环调用内核调度器,根据消息和事件的优先级从队列中弹出消息和事件,并调用相关的处理程序,触发不同任务的执行。执行一直持续到队列为空,此时内核将把设备置于低功耗休眠模式。
许多这样的事件和消息被显示给用户应用程序回调函数。这些功能允许用户实现他们的应用程序,而不必创建复杂的任务、消息事件等。
请注意
大多数情况下,在开发应用程序时不需要创建任务。绝大多数应用程序都可以通过向SDK应用程序亚博国际官网平台网址回调函数中添加代码来实现。它是强烈推荐您可以在开发应用程序时遵循此技术。
3.2.1.应用回调
SDK提供了两种类型的应用程序回调:
系统回调用于将系统事件(如从睡眠中唤醒、即将进入睡眠等)传递给用户应用程序。
蓝牙勒回调用于向用户应用程序传递堆栈事件(如连接、断开连接等)。
中定义的数据结构中包含所有可用的回调函数(包括堆栈和系统)user_callback_config.h。
3.2.1.1.系统回调
SDK提供了以下回调,以指示用户应用程序发生了某些系统事件:
函数 |
描述 |
时间限制 |
---|---|---|
|
在设备初始化过程中重置后调用。 |
没有一个 |
|
当BLE核心处于活动状态时,由主循环周期性调用。 |
媒介 |
|
当BLE核心可以处于休眠模式时,由主循环周期性调用。 |
媒介 |
|
在主循环开始检查设备是否可以进入睡眠模式之前调用。 |
媒介 |
|
在主循环将设备置于睡眠模式(无线电关闭但外围设备仍然打开)之前调用。 |
硬 |
|
在主循环将设备置于睡眠模式(无线电和外设关闭)之前调用。 |
硬 |
|
在设备退出睡眠模式后调用。 |
硬 |
请注意
这两个app_on_ble_powered
而且app_on_system_powered
定期调用,直到主循环确定设备可以进入睡眠模式。这两个函数都允许用户通过返回适当的值来阻止设备进入睡眠模式。这允许应用程序保持设备处于清醒状态,直到它完成任何正在进行的操作(读取传感器数据等)。
除了上述的回调函数之外,还有一个需要作为用户应用程序的一部分实现的回调函数——periph_init
函数。这个函数在SDK提供的所有示例中都有,请参阅user_periph_setup.c文件。当设备在重置后启动或从睡眠模式中唤醒时,将调用此函数,并应用于初始化应用程序将使用的任何外设。
下面的图表说明了在各种条件下将发生的系统回调的顺序。