自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 人们日常所用的时间是

人们日常所用的时间是 C平太阳时  C平太阳时  太阳时系统包括真太阳时、平太阳时和区时  恒星时:是春分点距子午圈的时角。对应于地球上每一个地方子午圈存在一种地方恒星时。恒星时是世界时0时(北京时间8时)的格林尼治恒星时。粗略地说,此恒星时可看作是各地子夜0时的地方恒星时,也就是当地子午圈上恒星赤经的数值。例如,5月6日子夜0时的恒星时为14时55分48秒,此时可见牧夫座a星(赤

2017-01-19 14:52:38 1894

原创 C中定义了一些字母前加"\"的意思?比如\r\n

转义字符C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等。实际上,所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示这种表示方式称之为"转义字符",因为因为后面的字符,都不是它本来的ASCII字符意思了。作用转义字符串(Escape Sequence)也称字符实体(Character Entity)。在HT

2017-01-16 11:14:44 1692

原创 电池容量工作时间如何计算

电池工作时间如何计算一个220mah的3V锂电池,在工作电压为3V的 工作电流为1.2mA,电器上工作能工作多长的时间?答:这里的220mAh是放电的总电量Q=It所以t=Q/I=220/1.2=183h.在标准状态下能用183小时.NOTE:题目中的3V是正常工作的电压.ps:蓄电池的工作时间是根据蓄电池的容量和工作电流来估算的,因为计算出来的时间肯定要比实际

2017-01-11 17:04:42 25967

原创 char型十进制整数和ASCII码间的转换

static unsigned short itoa(unsigned char cNum, char *cString){ unsigned short length; if((cNum>=0)&&(cNum<=9)) { *cString=cNum+0x30; length=1; } else if((cNum>=0x

2017-01-09 17:52:11 3873

原创 hex码和ascii码的转换

//0x00~0x0F转换为ASCII码unsigned char hextoa(uchar dat){ if (dat <= 9) return (dat+'0'); else return (dat+('A'-10));}//0~9,A~F的ASCII码还原成0~15unsigned char atohex(uchar dat){ if (dat <= '9')

2017-01-09 17:48:25 11251

原创 十进制转十六进制的C语言实现

#include#include#includevoid reversestr(char*source,char target[],unsigned int length);void tohex(unsigned long num,char*hexStr);int main(){ char hexStr[16]; int num; printf("请输入一个十进制数:\n");

2017-01-09 17:44:54 8304

转载 Airkiss智能配置上网

揭开智能配置上网(微信Airkiss)的奥妙面纱本文介绍微信利用Airkiss技术对wifi设备进行智能配置上网的场景,并分析其实现的原理。这里再次说明,Airkiss只是用于配置上网,其跟微信硬件平台的通信流程和接入协议规范完全没有关系。一个wifi设备并不一定要通过Airkiss技术来配置上网,它也可以利用传统的方法来配置,也可以利用其它厂商的智能配置技术来完成配置。所有的wi

2017-01-08 17:52:39 5409

原创 nRF51822 power on reset fail! amazing!

前言:用jlink调试代码观察现象与拔掉jlink,对系统重新上电观察到的现象理论是一样的才对,然而重新上电后,感觉单片机根本就不在运行(也就是单片机根本就没复位),于是就去验证单片机有没有运行(在mian函数入口处点亮一盏灯来观察有没有复位).今天遇到了一个奇葩的问题,单片机nRF51822上电复位失败!首先想到的是是不是工程设置的问题?一看,没错,有设置。但为什么灯就是没被点亮呢?

2017-01-05 18:02:11 3171

转载 nrf51822裸机教程-硬件timer

该讲介绍51822的Timer/Counter模块工作在timer模式下(定时器模式,还可以工作为计数器模式) 如何操作51822的Timer/Counter结构如下图所示Timer模块从PCLK16M/PCLK1M 处获得时钟源,然后经分频后得到的时钟作为timer模块的时钟 ( 上图Ftimer)。当timer模块选择为timer模式时,Counter会在Ftimer的

2017-01-04 14:44:42 3558 3

转载 nrf51822裸机教程-GPIO

首先看看一下相关的寄存器说明 Out寄存器 输出设置寄存器每个比特按顺序对应每个引脚,bit0对应的就是 引脚0该寄存器用来设置 引脚作为输出的时候的 输出电平为高还是低。与输出设置相关的 还有另外两个寄存器OUTSET和OUTCLROUTSET用来设置某个引脚的输出为高电平OUTCLR用来设置某个引脚的输出为低电平这两个寄存器同OUT寄存器一样 每个位

2017-01-04 14:43:21 6270

转载 nrf51822裸机教程-GPIOTE

GPIO通常都会具有中断功能,上一讲的GPIO中并没有涉及到中断的相关寄存器。51822将GPIO的中断相关做成了一个单独的模块GPIOTE,这个模块不仅提供了GPIO的中断功能,同时提供了 通过task和event的方式来访问GPIO的功能。其实中断功能也是通过 event来使能的,即中断是通过设置寄存器中相关位来决定  当event发生时是否发生中断 来设置中断功能的,具体下面介绍

2017-01-04 14:42:16 8633 3

转载 nrf51822裸机教程-PPI

Programmable Peripheral Interconnect即可编程外设互联 系统,该模块是51822 提供的一个特性。 目的是为了让51822 的外围模块可以不通过处理器而自动相互作用。 工作原理很简单。 可以将PPI看做是一通道。 该通道有两个端点,一个叫event end-point,另一个为task end-point. 通过将具体的 event寄存器和 task寄存器 分别赋

2017-01-04 14:25:05 3314 1

转载 nrf51822裸机教程-IIC

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

2017-01-04 14:21:31 3941

转载 nrf51822裸机教程-RTC

RTC0被协议栈使用了。所以在跑蓝牙程序的情况下。RTC0不能使用。RTC相关寄存器如下:    EVTEN,EVTENSET,EVTENCLR.    这三个寄存器用来设置是否使能某个事件。(TICK,OVRFLW,COMPARE0-3 事件)    INTEN,INTENSET,INTENCLR.    这三个寄存器用来设置某个事件发生时是否触发RTC中断。

2017-01-04 14:18:34 3905 2

转载 nrf51822裸机教程-UART

Uart硬件模块通常都有内置的硬件接收buff,比如51822的硬件uart模块图如下因为通常接收到uart数据时都会做一些处理。比如保存到数据,或者对数据做一些判断之类的。如果uart的波特率设置的很快,mcu的处理速度又不是很快或者是处理的过程比较耗时,那么当uart串口连续过来很多数据时,你在处理第一个数据时,后续的数据就可能丢失。所以通常uart模块都会内置一个很小的硬件接

2017-01-04 13:59:44 7921 1

转载 BLE-NRF51822教程10-手机动态修改设备名

该教程讲解如何实现用手机来动态修改设备名,达到手机连接设备后修改设备名称,然后断开连接再扫描能够看到新的设备名。 教程基于sdk9.0 下的uartdemo,如下目录中xxx\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uart Nordic的协议栈实现中默认都会有一个

2017-01-04 12:46:03 786

转载 BLE-NRF51822教程9—动态密码(配对码)

本讲教程也是在 sdk中的的uart例子 的基础上修改实现动态密码(其实是配对码)的功能。Uart例子在以下目录中XXX\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uart 关于配对的一些理论知识在静态密码教程中有介绍。这里就不再赘述。 因为是动态密码,板子上没有

2017-01-04 12:45:16 799

转载 BLE-NRF51822教程8-动态广播

本讲接收如何实现动态广播。教程基于 9.0 sdk中的 Uart例子。实现动态广播的方法是  广播->停止广播->修改参数->重启广播所以我们通过一个定时器来周期性的  关闭广播然后再修改广播数据之后再开启广播。Sdk 9.0中的广播搞了好几个模式,做的有点麻烦,所以我对他做了比较大的改动。首先 在main.c中 中的advertising_init函数

2017-01-04 12:44:35 3191 1

转载 BLE-NRF51822教程8-软件定时器的使用

本讲教程还是会基于 9.0 sdk中的uart例子。 在该例子上使用 sdk中自带的软件定时器来实现一些功能Uart例子在sdk 中如下目录XXX\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uart   首先 了解一下相关API 

2017-01-04 12:43:26 2354

转载 BLE-NRF51822教程7-带协议栈工程中使用flash

本教程说明 如何在带协议栈的BLE工程中使用flash操作。教程基于sdk9.0的 uart工程xxx\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uartNordic的SDK将flash操作封装成了一个pstorage模块。 模块提供了很好用的flash操作接口。使用flash前需要调用 ps

2017-01-04 12:42:12 1617

转载 BLE-NRF51822教程6-创建一个自己的服务

该教程基于 sdk9.0首先打开 sdk 下的工程模板 在以下路径中XXXX \Keil_v5 \ARM \Pack \NordicSemiconductor \nRF_Examples \9.0.0 \ble_peri pheral \ble_app_template \pca10028 \s110 \arm5打开工程后,可以发现该模板的框架和 一般工程例子基本是一样的。区别 就是有

2017-01-04 12:40:48 1274

转载 BLE-NRF51822教程5-静态密码设置

这一讲介绍配对的一些相关理论知识,并且介绍如何实现”静态密码”的设定程序是基于sdk9.0 下的 uart demo另外 测试使用的手机app是 IOS下的lightblue。这里准确的说法应该是叫配对码,而不是密码。输入这个这个配对码是配对过程中可选的一部分介绍如何设置静态密码前先介绍一下配对的相关知识(后面都直接叫密码,而不是配对码)

2017-01-04 12:39:57 875

转载 BLE-NRF51822教程4-串口BLE解析

本讲逐行代码解析官方串口BLE例程demoPS: 基于SDK5.1 主要分一下几个部分:1 :Main函数的整体注释2 :函数单独解析。3 :接收串口数据并发送给对端设备4 :接收手机数据并通过串口打印 Ps :第一和第二部分我在教程工程初始化流程中已经详细说明这里直接复制过来,做了一些修改以及添加了关于添加服务和添加特征值的讲解,如果之前看过可以直接看下 2函

2017-01-04 12:38:45 2967

转载 BLE-NRF51822教程3-sdk程序框架剖析

本讲为框架介绍,不会牵涉到太多代码细节。 51822的官方SDK其实是没有框架依耐性的。什么叫框架,比如TI的BLE SDK中就有一个操作系统抽象层(OSAL)他是一个轮训的调度。你需要按照他的方式去创建任务等等。而51822的SDK本质上只是提供了各种调用接口,比如开启初始化协议栈,初始化一些硬件功能模块,开始广播,发起链接等等。这些接口怎么用完全取决于自己。不过一般固件开发都是一些

2017-01-04 12:36:21 6752 1

原创 NORDIC官方SDK里的例程不使用"..\" .\"文件的包含的疑惑

NORDIC官方SDK里的例程不使用"..\"  .\"文件的包含的疑惑,上图!原来猫腻在这里,上图!原来在预处理做了包含,这样在使用时,包含文件就省事了!看来以后这是个趋势呀,以后开发者只需要关注自己要重点开发的部分就可以了,没必要在一些琐碎的细节上浪费宝贵的时间!

2017-01-02 00:40:46 1151

空空如也

空空如也

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

TA关注的人

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