Nordic系列芯片讲解四(协议栈与app的调用方式)

Nordic是协议栈以hex文件的方式提供,那么app怎么是怎么通过api来调用协议栈的呢。

 

1. 应用层通过API的方式调用协议栈的函数,通过SVC中断方式。

 

    当协议栈被使能时,共用了0X10~0XFF,具体来说就是每个API函数对应一个number。

#define SOC_SVC_BASE               (0x20) 

#define BLE_SVC_BASE           0x60       /**< Common BLE SVC base. */

#define BLE_SVC_LAST           0x6B       /**< Common BLE SVC last. */

#define BLE_GAP_SVC_BASE       0x6C       /**< GAP BLE SVC base. */

#define BLE_GAP_SVC_LAST       0x93       /**< GAP BLE SVC last. */

#define BLE_GATTC_SVC_BASE     0x94       /**< GATTC BLE SVC base. */

#define BLE_GATTC_SVC_LAST     0x9F       /**< GATTC BLE SVC last. */

#define BLE_GATTS_SVC_BASE     0xA0       /**< GATTS BLE SVC base. */

#define BLE_GATTS_SVC_LAST     0xAF       /**< GATTS BLE SVC last. */

#define BLE_L2CAP_SVC_BASE     0xB0       /**< L2CAP BLE SVC base. */

#define BLE_L2CAP_SVC_LAST     0xBF       /**< L2CAP BLE SVC last. */

 

2.而协议栈则通过SWI中断开通知APP.

由上图可以可以看到 SWI用到了SWI1, SWI2, SWI5, 但SWI5是协议栈本身调度使用了。在sdk代码中也体现了这一点。

#define SD_EVT_IRQn                       (SWI2_EGU2_IRQn)        /**< SoftDevice

#define SD_EVT_IRQHandler                 (SWI2_EGU2_IRQHandler)  /**< SoftDevice

#define RADIO_NOTIFICATION_IRQn           (SWI1_EGU1_IRQn)        /**< The radio

#define RADIO_NOTIFICATION_IRQHandler     (SWI1_EGU1_IRQHandler)  /**< The radio

  

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值