自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

feng574912883的专栏

问句天几高,心中志比天更高。

  • 博客(96)
  • 资源 (5)
  • 收藏
  • 关注

原创 FreeRTOS 全系列笔记——基于V10.4

FreeRTOS 系列笔记——基于V10.4

2023-05-13 21:25:25 543

原创 博客搬迁:https://fengxun2017.github.io/

博客搬至:fengxun2017.github.io

2022-11-16 00:02:56 137

原创 将博客搬至CSDN

博客搬至CSDN

2022-09-04 13:18:25 103

原创 CAS-无锁实现线程同步实验

例如对于一个全局数据 int num, 线程A 和 线程B 均对其进行执行 "+1操作",由于写操作实际涉及到"读取内存数据到寄存器","修改新数据","写回新数据到内存"。因此如果不进行线程同步,两个线程没有任何限制的对全局数据 num 进行增加操作,则结果可能不符合预期。例如 num=1时, 线程 A,B均对其进行 +1时,可能A刚做完 从内存读取数据到寄存器,cpu又...

2022-03-06 15:17:45 124

原创 nrf5 SDK中 FDS(Flash Data Storage)使用说明

本文档基于SDK13.1 这里详细介绍一下fds相关的api使用说明。前置文档为 FDS介绍文档。不了解fds的可以先看一下这个文档。 ret_code_t fds_register(fds_cb_t cb); 该函数注册 fds的事件处理函数,fds提供了写/更新/删除等api,不过这些api都是异步的,即调用后函数函数会立刻返回,但...

2019-04-08 12:50:35 206

原创 nordic 特性值创建详细分析

基础为 属性数据库 。 具体分析之前 还需要介绍 属性值访问权限的一点概念。 在属性数据库中介绍了 属性条目的组成为如下形式 句柄 UUID 属性值 ...

2019-01-10 11:05:25 202

原创 计算机网络复习

广域网使用交换技术,局域网使用广播技术。载波监听多点接入/冲突检测:发送前监听,边发边检测,检测到冲突停止发送,并随机发送一段干扰数据。等待一段时间后再尝试。载波监听多点接入/冲突避免:不能边发边收,所以检测不了冲突,只能避免。发送数据前提前预约(req-ack)冲突域是基于第一层(物理层)广播域是基于第二层(链路层)中继器和集线器是第一层设备,分割...

2018-12-24 17:00:51 425

原创 nrf5 SDK中 FDS(Flash Data Storage)介绍

本文档 基于SDK13.1 Fds(Flash Data Storage)模块是sdk中提供的操作flash的模块。 前面介绍过fs(Flash Storage)模块,这个模块也是sdk中提供的操作flash的模块。为什么要提供两个呢? 这需要了解一下关于flash操作的问题。 因为操作的是片上flash,所以...

2018-12-06 11:14:57 207

原创 android学习-内部类对象不能被序列化的问题

学习时编写序列化测试时使用了内部类,内部类实现了Serializable,但是执行时还是出错。原因:内部类对象持有外部类对象的引用,所以内部类对象序列化的时会对外部类对象以及其含有的成员行执序列化操作,从而导致错误(外部类没有实现Serializable,或其中有不能序列化的成员)。解决方法:不适用内部类,单独创建一个类。 或者用...

2018-07-27 15:22:46 454

原创 android学习--关于存储碰到的问题

使用openFileOutput 打开文件,进行文件存储时使用了BufferedWriter和BufferedReader。写测试例子时,例子中写完会立刻去读,结果发现读取不到内容。发现原因是bufferedWriter的缓存原因,写时数据还没写到文件,所以从BufferedReader缓存中也读不出内容。解决:写完后调用flush,强制将缓存中的数据写入文件。...

2018-07-19 18:30:59 284

原创 ATT_MTU协商

软件环境:nRF5_SDK_13.1.0_7ca7556\examples\ble_peripheral\ble_app_uart 使用nordic旧的SDK开发时,需要进行ble传输数据时通常都是将待发送的数据分包成20字节一包,之后再一包一包发送出去。 为什么要分成20字节一包?因为我们发送的数据是负载在 ATT层的,BLE...

2018-07-18 14:30:24 293

原创 nrf5 SDK中flash storage的使用

首先介绍section variables这个SDK中使用的特性:因为协议栈中的fstorage模块使用了这个。这里介绍一下方便对fstorage模块的理解。 介绍section variables之前,先考虑一下下面的对于flash管理模块的实现方式 通常的实现中,对于flash操作会封装成一个flash操作的管理模块,对于另外...

2018-06-11 19:18:53 110

原创 BLE-nordic协议栈timeslot机制

Nordic将其协议栈命名为softDevice,协议栈运行启动后肯定需要访问MCU上的一些外设资源,比如Radio,Timer0等。协议栈启动后,softDevice对这些资源的访问是独占的,即softDevice启动后,Radio,Timer0等外设资源是不允许应用再直接去访问的,不然会破坏协议栈的运行状态。 但是从BLE协议本身来说,BLE...

2018-05-25 17:56:25 289

原创 BLE-ANCS协议介绍

1 ANCS综述 ANCS即Apple Notification Center Service。是IOS系统中的一个通知服务。设备连接手机后,设备首先需要先使能IOS系统的通知功能,具体即设备上的GATT 客户端发现IOS上的ANCS,并且使能其 通知源Characteristics 的notify功能。 之后IOS系统就会通过ble 推送消息...

2018-05-07 11:23:17 188

原创 BLE-HID 音乐/相机控制

以SDK下自带的 HID 鼠标示例为例说明: 音乐控制: 代码中 main中调用了services_init初始化几个服务。 其中调用hids_init 来初始化hid服务 函数中首先定义了 static uint8_t rep_map_data[] 这个数组变量。 ...

2018-03-19 14:28:53 387 1

原创 BLE-HID介绍

BLE HID规范是以USB HID规范为基础的,所以这里会一切简介。 Input Reports,输入报告 Ble中,表示Bluetooth HID device 发送数据给Bluetooth HID Host. USB中输入报告通常通过 中断输入端点来传输。 当然也可以通过 控制...

2018-03-03 11:50:07 329

原创 astyle格式化代码

Astyle工具可以用来格式化代码,让代码更整齐 网上下载astyle. 使用的参数如下: --style=ansi -s4 -S -p-D -m0 -M40 --convert-tabs--suffix=.pre -s4 表示默认tab是4个空格 -S 表...

2017-04-11 20:57:23 67

原创 快速指数运算:平方-乘算法

RSA 加解密中存在指数运算 xa。通常解密运算中的 指数非常大,a 的二进制位数通常会大于等于1024 bit, 即 可能a >=2^1024.如果用一般方法直接计算 X^a的值, 即X*X*X......需要的运算量非常大定义:MUL为乘法运算 即乘以x , sq 为平方运算...

2016-12-07 19:26:53 803

原创 ble属性数据库

这里只介绍常用的一些概念,一些极少用到的概念为避免混淆这里不做介绍。 简单的来说,BLE的服务端属性数据库可以就看做是一张表。表中包含很多个条目。每一条条目就称为属性条目。 属性条目 属性条目 ...

2016-11-17 19:23:40 40

原创 nrf51822-添加DFU服务

开发环境: SDK9以ble_app_uart例子为基础,在其上添加dfu服务。 Sdk中的bootloader提供了两个方式来进入升级模式,一种是按键,另一种是手机点击升级。 在bootloader代码相关代码如下 如果是手机app通过点击图标直接升级,那么在app跳转到bootloader进行升级前就会设置 NRF...

2016-10-24 19:12:21 54

原创 nrf51822-提高nordic ble数据发送速率

讲解2点: 为什么 nordic的4.0协议栈中ble只能发送20字节的应用负载数据。 大量数据发送时如何提高发送速率 1:为何上层应用负载每次最多20字节 首先了解 4.0中链路层的包格式如下: PDU即协议数据单元,即链路层的负载数据。应用层用...

2016-10-13 21:45:55 50

原创 nrf51822-配对绑定实现过程

关于配对绑定的一些原理内容这里不再重复介绍,看之前的几篇文档,静态密码,动态密码,连接时触发配对就可以了。 配对绑定的内容可能比较难懂,升入的学习需要去看规范,将前面的几篇相关文档看一遍实验一边再去看规范能更好理解相关理论。 配对绑定是一个完整的过程,只是绑定是可选的,绑定简单来说就是存储一个长期秘钥LTK,以方便以后加密。当然还分配了其...

2016-10-10 20:10:41 50

原创 nrf51822-使用16位自定义UUID

以 ble_app_uart为例工程中创建的nus服务以及其中的两个特性值都是128位的UUID。nordic sdk中使用128位UUID的方式和标准128UUID类似,它是提供一个基准UUID,然后再修改其中的12 13字节如下图所示,向系统注册 自定义的基准UUID后,系类返回type,只是使用UUID时,指定为改type然后uuid还要定义2字节就可以了。协议栈内...

2016-09-27 18:31:37 60

原创 nrf51822-广播模式

解决以下几个问题: 1 SDK9 中的几种广播模型 2 广播超时如何进入睡眠 3 如何取消广播超时睡眠使其可以无限广播。 1 SDK9 中的几种广播模型 Nordci SDK对于广播方面有一个模块。这个模式定义了几种广播模式,当然这些模式并非规范中的广播模式,仅仅是sdk自己定义的一些模式而已。...

2016-09-26 08:45:59 57

原创 堆排序

堆(二叉堆)数据结构是一中数组对象,它可以被视为一棵完全二叉树。 为方便起见。我们的分析基于 堆的第一个元素为A[1] ,并且堆的元素都是正整数。 这里我们分析最大堆。 堆的结构性质: 容易证明一棵高位 h二叉树的节点个数n 满足 2^h<=n<=2^(h+1)-1;由这个公式我们不难得到 h...

2016-09-23 15:24:29 65

原创 M0函数调用和中断触发时 LR寄存器的处理

环境: keil 5.14 MCU: 一款M0的处理器 主要是解决以下问题:函数嵌套调用过程中LR的处理,以及中断发生时LR的处理。 测试代码如下 uint8_t add(uint8_t a, uint8_t b){ uint8_t...

2016-08-31 21:17:44 233

原创 插入排序和希尔排序

插入排序: 插入排序由n-1趟排序组成。第 i 趟排序前,保证从位置 0 到位置i-1 上的元素已经是排序状态(这是插入排序正确的原因,也是前提条件)。 所以第 i 趟的排序工作就是将 A[i] 放到 A[0,1,2,3...i-1]中的正确的位置。 举个例子。就像玩扑克牌的时候,我们每次拿到的是一张不知道的牌,然后顺着左手中已经有的牌遍历,...

2016-08-26 12:56:33 48

原创 M0存储访问地址对齐-调试微信硬件平台demo碰到的问题

微信硬件平台提供的demo中传输数据格式如下。每次数据传输时,都将有效数据打包,然后再添加上固定包头包尾后发送。 官网提供的demo是实现点灯发送消息什么的,所以为了区分这些消息以及一些其他附加功能又在有效数据(也就是上面的protoalbuf打包的变长包体) 里面定义了一个包头 typedef struct { ...

2016-08-23 21:37:08 114

原创 数组到结构体转换和联合体与位段结合中的大小端问题

移植驱动代码时发现工程中使用了如下形式的代码 typedef struct BlkTestTag{ uint16_tm_u1Var1; uint8_t reserve[2]; uint32_tm_u4Var2; }BlkTest; ...

2016-08-23 20:15:37 101

原创 服务发现过程分析

本讲主要针对 主从连接后主机如何在从机上找到自己需要的服务的过程。需要和 主从通信过程分析教程一起看。 服务查找过程就是主从连接后,主机需要在从机上查找所有的服务以及服务下面的特征值和描述符等信息。不过Sdk中的主从通信例子因为是个 简单的主从点灯demo,所以服务查找过程中并不是搜寻从机上的所有服务,而是根据初始化时注册的要查找的服务来定向搜寻...

2016-07-26 20:33:59 21

原创 nrf51822-主从通信分析2

解决第三个问题:如何使能从机上的特征值的 notify功能,使其能通过notify方式发送数据 使能从机的notify功能是通过写0x0001到从机的那个具有notify功能的特征值的CCCD描述符中来实现的。 既然要写那就需要先有服务发现过程,服务发现就是找到从机里我们需要的服务以及服务下面的 特征值,描述符等。关于服务发现过程的具体讲解 ...

2016-07-26 20:17:00 21

原创 nrf51822-主从通信分析1

建议看该教程前,先看一下 简单扫描器实现 教程 讲解基于sdk目录下central中的两个例子。 关于主机的程序框架其实和从机都是一样的,都是基于事件驱动的框架。 Main函数中完成初始化, 从机的话就启动广播,主机就启动扫描。 之后都是基于事件驱动的方式将ble相关事件返回给上层app,并且再通过ble_evt_dispatch函数将事...

2016-07-19 19:53:31 29

原创 BLE-NRF51822-实现简单扫描器

在sdk目录 XXX:\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_central 下有官方提供的主从连接的demo. 官方的demo中实现的是主机通过名字来判断周围的设备是否是自己要寻找的设备,如果是就发起来接。 并且连接建立后可以继续保持侦听,一共可以连接...

2016-07-19 19:43:34 29

原创 BLE-NRF51822教程-RSSI获取

当手机和设备连接上后,设备端可以通过获取RSSI来在一定程度上判断手机离设备的相对距离的远近。 获取函数很简单直接调用sd_ble_gap_rssi_get 接口函数就行了,传入连接句柄和buff就能获取到 最近一次连接事件中的 接收信号强度。 调用该函数之前需要先调用sd_ble_gap_rssi_start 函数...

2016-06-28 12:30:35 68

原创 51822模拟ble广播-实践

转载请注明出处,谢谢! 理论部分主要介绍了BLE广播包的 数据包格式,知道了数据包格式只需要按照格式要求设置数据包然后发送,那么BLE扫描者就能将这个数据包解析成ble广播包了。 这里我们用51822的radio来实现ble的广播包。 下图是51822空中包的格式。 Preamble: 该部分会根据接入地址而自动设置,不需要...

2016-06-13 20:42:50 48

原创 51822模拟ble广播-理论

转载请注明出处,谢谢! 这讲教程介绍如何使用51822的radio部分来模拟实现ble广播功能,并使手机能够搜索到该设备。这里先介绍相关理论,实战部分见 实战教程。 既然是模拟ble广播,那么首先就需要知道 ble的广播包在空中传输的格式。 整体的 空中包数据 分如下几个字段 前导:1字节,为固定序列,8bit为...

2016-06-13 20:30:05 40

原创 nrf51822裸机教程-SPI(主)

关于SPI总线的介绍这里就不细说了,网上有很多介绍SPI总线时序的。 SPI总线的本质就是一个环形总线结构,在时钟驱动下两个双向移位寄存器进行数据交换。 所以SPI总线的特色就是:传输一字节数据的同时也会接收到一字节数据。支持SPI操作的芯片通常都会有一个CS引脚作为片选信号,所以总线上可以挂多个支持SPI操作的芯片,每次想对哪个操作就直...

2016-05-20 09:50:25 119

原创 BLE-NRF51822教程15-BLE地址

本教程基于 sdk9+sd8.0 51822的 BLE的设备地址 可以通过如下函数函数来获得 地址的设置可以调用如下函数设置。 官方的demo工程中,都是没有主动调用过 sd_ble_gap_address_set函数来设置设备地址的。所以 demo工程中使用的都是默认地址。 这个默认地址就是 ...

2016-05-10 11:40:37 41

原创 nrf51822裸机教程-IIC

关于IIC总线的核心有以下几点: :时钟线高电平期间必须保持数据线不变。 :时钟线低电平期间可以改变数据。 :时钟线和数据线上都要接上拉电阻,以使总线不工作时,两根线的电平都处于高电平状态。 :每个传输的字节后面需要由对方回送一个应答信号。 由上面可知,在时钟线为高电平的时候如果数据线改变,那么就是”不...

2016-05-05 12:40:48 50

原创 BLE-NRF51822教程14-adc和电池电量服务

51822的adc 模块图如下所示: 51822ADC有8个通道。AIN0-AIN7.这几个通道对应的引脚是固定的。可以在 51822的产品说明书中找到。 通过CONFIG寄存器 选择哪一个通道作为ADC的输入。 如上图,ADC不仅可以测量8个通道的输入进过比例转换后的模拟电压(比如选择1/3,则实际adc转换的数据为外部输入电压的1/3)...

2016-04-28 11:24:34 77

Cortex-M3 Technical Reference Manual

Cortex-M3 Technical Reference Manual

2015-09-15

晶体管电路设计下(高清pdf)

晶体管电路设计下(高清pdf) 铃木雅臣

2013-09-13

晶体管电路设计上(高清pdf)

晶体管电路设计(高清pdf) 铃木雅臣

2013-09-13

ads9851集成模块原理图

ads9851集成模块原理图

2013-08-12

空空如也

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

TA关注的人

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