自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 ucos 信号量的理解3

简单地说:   当信号量=0时,表示信号量代表的资源不可用,操作系统调用OSSemPend函数的任务加入该信号量的等待任务列表中,  当信号量>0时,表示信号量代表的资源可用,OSSemPend函数返回,任务可用使用资源,一般地,信号量的最大值表示资源的最大同时共享数,nmax=1;表示资源最多只能由i该任务使用,为了保证该单元不被其它任务修改,就使用nmax=1的信号量,nmax>1

2016-12-30 16:53:53 805

原创 ucos信号量的理解2

ucos 对信号量的支持由os_sem.c  os_core.c支持,其中os_core.c提供OS_EVENT 数据结构的一些基本操作,os_sem.c则实现具体的信号量,信号量实现的分析,主要数据结构问题。1.OS_EVENT结构的实现分析typedef struct{INT8U OSEventType  //事件控制块的类型INT8U OSEventGrp   //等待的任务

2016-12-30 14:11:01 580

原创 链表的各类操作详解

链表是一种常见的重要的数据结构,它是动态地进行存储分配的一种结构,它可以根据需要开辟内存单元,链表有一个头指针变量,以head表示,它存放一个地址,该地址指向一个元素,链表中每一个元素称为结点,每个结点都应该包括两部分:一为用户需要的实际数据,二为下一个结点的地址,因此head指向第一个元素,第一个元素又指向第二个......知道最后一个,该元素不再指向其它元素,它称之为表尾,它的地址

2016-12-29 17:33:23 1222

原创 ucos信号量理解1

本文主要来自:http://blog.csdn.net/sinat_34550830/article/details/52911396    ucos中提供了好几个用于同步事件以及共享资源访问的机制,目前我看明白的有信号量,互斥信号量,事件标志组。下面谈谈自己对他们的理解:1.互斥信号量:互斥互斥,意思就是我用了你就不能用,你用了我就不能用。永远都只有一个人独占这个东西

2016-12-29 16:37:45 417

转载 指针的指针理解

#include  int main(){int a =100;int *p1 = &a;int **p2 = &p1;int ***p3 = &p2; printf("%d, %d, %d, %d\n", a,*p1, **p2, ***p3);printf("&p2 = %#X, p3 = %#X\n",&p2, p3);printf("&p1 = %#X, p2 =

2016-12-28 12:24:11 328

转载 51822 主从机分析2

解决第三个问题:如何使能从机上的特征值的notify功能,使其能通过notify方式发送数据使能从机的notify功能是通过写0x0001到从机的那个具有notify功能的特征的CCCD描述符中来实现的。既然要写那就要先有服务发现过程,服务发现就是找到从机里我们需要的服务以及下面的特征值,描述符等。因为服务发现过程SDK已经做好了,我们不需要去处理,我们要做的就是注册自己需要找的那个服务,

2016-12-20 16:53:38 740

转载 51822 主从机分析1

本文主要来自:http://blog.chinaunix.net/uid-28852942-id-5748021.html关于主机的程序框架其实和从机都是一样的,都是基于事件驱动的框架,main函数中完成初始化,从机的话就启动广播,主机就启动扫描,之后都是基于事件的驱动方式将ble相关事件返回给上层APP,并且再通过ble_evt_dispatch函数将事件分发给各个处理函数 

2016-12-20 15:12:13 1267

转载 51822 RSSI获取

本文主要来自:http://blog.chinaunix.net/uid-28852942-id-5746797.html当手机和设备连接上后,设备端可以通过获取RSSI来 在一定程度上判断手机离设备的相对距离的远近。获取函数很简单直接调用sd_ble_gap_rssi_get 接口函数就行了,传入连接句柄和buff就能获取到最近一次连接事件中的接收信号强度。调用该函数之前需要先调用s

2016-12-20 10:32:41 2238

原创 51822 DFU服务

SDK11中的bootloader 提供了两个方式进入升级模式,一种是上电按住按键进入升级状态,另一种是手机点击升级,bootloader相关代码如下如果是手机APP通过点击图标直接升级,那么在APP跳转到bootloader进行升级前就会设置,NRF_POWER->GPREGRET这个寄存器的值,所以bootlaoder代码中开始就是判断这个寄存器中的值来判断是不是手机触发进

2016-12-16 17:46:18 2485

转载 51822动态密码

我们使用SDK11 uart例子分析,因为是动态密码,板子上没有显示屏,所以通过串口将动态密码打印出来,然后手机正确输入才能配对成功。无论是静态密码还是动态密码都可以看做是配对过程中的一种认证方式即 我是我,因为这样可以一定程度上避免他人连上你的设备,因为他们看不到设备显示的配对密码而你自己可以看到,配对码的输入是配对过程中生成TK的一种方式即Passkey Entry.另外还有Jus

2016-12-14 11:13:04 535

原创 51822静态配对密码

主要讲解SDK11下静态密码的设定起初提供安全性的两个设备如果希望做一些需要安全性的工作,就必须先配对,配对涉及两个设备的身份认证,链路加密,如果配对时设置了绑定,随后还会有一个密钥分配,分配密钥用户可以存储在flash中这样两个设置再第二次重连是的安全启动会更快。而不是需要像第一次需要再启动整个配对过程配对的第一个过程首先是配对信息的交换,这些信息用于确定认证方式,以及后续是否需要分

2016-12-13 18:08:53 2073

原创 51822协议栈中使用flash

Nordic的SDK将flash操纵封装成一个pstorage模块,模块提供了很好的flash操作接口。使用flash前需要调用pstorage_init函数来初始化pstorage模块,然后就可以调用pstorage_register函数来注册自己要使用的block数量和block_size之后就可以使用pstorage_block_identifier_get函数或得到你要的操作b

2016-12-13 09:40:27 3324

转载 51822服务发现(db_discovery)

主要来自:http://blog.csdn.net/qutiezhu/article/details/52318073主要是讲主从连接后主机如何在从机上找到自己需要的服务的过程,需要和主从通信过程分析教程一起看:服务查找过程就是主从连接后,主机需要在从机上查找所有的服务以及服务下面的特征值和描述等信息,不过SDK中的主从通信例子因为是个简单的主从点灯demo,所以服务查找过程中并不是找

2016-12-12 11:11:23 3577

原创 51822配对

配对和绑定区别:关于配对和绑定,一些人可能一直分不清楚他们的区别。配对是为了对提高蓝牙链路传输的安全性。而绑定是配对发起时的一个可选配置。 绑定并不是一个独立存在的过程。 可以理解成 配对有两种方式, 没有设置绑定表示的配对请求和设置绑定标志的配对请求。对于没有设置绑定标志的配对请求,配对的过程就是1,链路信息的交换,主要就是两边设备的i/o能力,是否需要绑定,

2016-12-09 15:38:51 734

转载 51822 proximity

主要来自http://www.cnblogs.com/bhlsheji/p/5340092.htmlble_app_proximity 程序,事实上跟防丢有关的程序打开sdk包路径:D:\myfile\test\examples\ble_peripheral\ble_app_proximity\pca10028\s130\arm5_no_packs1. TX Power Service

2016-12-02 10:37:38 1135

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除