在裸机下官方已经提供另一个RNG的例子(RF51_SDK_10.0.0_dc26b5e\examples\peripheral\rng)

好了现在我将给出在蓝牙模式下如何使用例子

#include "random.h"

void random_create(uint8_t* p_result, uint8_t length)
{
uint32_t err_code; while (length)
{
uint8_t available = ;
err_code = sd_rand_application_bytes_available_get(&available);
APP_ERROR_CHECK(err_code);
if (available)
{
available = available < length ? available : length;
err_code = sd_rand_application_vector_get(p_result, available);
APP_ERROR_CHECK(err_code);
p_result += available;
length -= available;
}
}
} void randombytes(uint8_t* p_result, uint64_t length)
{
random_create(p_result, (uint8_t)length);
}
/*
* random.h
*
* Created on: Oct 20, 2017
* Author: libra
*/ #ifndef HOMEKIT_RANDOM_H_
#define HOMEKIT_RANDOM_H_ #include <stdint.h>
#include "nrf_soc.h"
#include "app_error.h" extern void random_create(uint8_t* p_result, uint8_t length);
extern void randombytes(uint8_t* p_result, uint64_t length); #endif /* HOMEKIT_RANDOM_H_ */

好了现在我们在ble_app_template基础上进行修改(下面给出主要的测试部分带)

APP_TIMER_DEF(m_app_timer_id);
#define TIMER_INTERVAL APP_TIMER_TICKS(1000, APP_TIMER_PRESCALER) static void timer_timeout_handler(void * p_context)
{ uint8_t rng_result[]; randombytes(rng_result,sizeof(rng_result)); #ifdef RTT_LOG_ENABLED loge("rng_result[8] %x %x %x %x %x %x %x %x",rng_result[],\
rng_result[],\
rng_result[],\
rng_result[],\
rng_result[],\
rng_result[],\
rng_result[],\
rng_result[] ); #endif //RTT_LOG_ENABLED } /**@brief Function for the Timer initialization.
*
* @details Initializes the timer module. This creates and starts application timers.
*/
static void timers_init(void)
{ // Initialize timer module.
APP_TIMER_INIT(APP_TIMER_PRESCALER, APP_TIMER_OP_QUEUE_SIZE, false); // Create timers. /* YOUR_JOB: Create any timers to be used by the application.
Below is an example of how to create a timer.
For every new timer needed, increase the value of the macro APP_TIMER_MAX_TIMERS by
one.*/
uint32_t err_code;
err_code = app_timer_create(&m_app_timer_id, APP_TIMER_MODE_REPEATED, timer_timeout_handler);
APP_ERROR_CHECK(err_code);
} static void application_timers_start(void)
{
/* YOUR_JOB: Start your timers. below is an example of how to start a timer.*/
uint32_t err_code;
err_code = app_timer_start(m_app_timer_id, TIMER_INTERVAL, NULL);
APP_ERROR_CHECK(err_code); }

NRF51822之RNG的更多相关文章

  1. [nRF51822] 7、基础实验代码解析大全(前十)

    实验01 - GPIO输出控制LED 引脚输出配置:nrf_gpio_cfg_output(LED_1); 引脚输出置高:nrf_gpio_pin_set(LED_1); 引脚电平转换:nrf_gpi ...

  2. [nRF51822] 16、nRF51822的随机数生成器,及随机数生成器的一些知识(可以帮您补补随机数发生器的知识)

    1.前言 随机数生成器在通信.加密.图像传输等领域应用广泛,且一般起到关键性作用.我在最近设计的一个近场射频通信协议的碰撞避退算法的过程中,便对此有深深体会. 2.伪随机数发生器 随机数发生器一般包括 ...

  3. [nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)

    蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体 ...

  4. [nRF51822] 13、浅谈nRF51822和NRF24LE1/NRF24LU1/NRF24L01经典2.4G模块无线通信配置与流程

    前言:  nRF51可以支持基于2.4G的互相通信.与NRF24LE1的通信.与NRF24LU1的通信.与NRF24L01的通信. 一.nRF51822基于2.4G和nRF51822通信 其中nRF5 ...

  5. [nRF51822] 12、基础实验代码解析大全 · 实验19 - PWM

    一.PWM概述: PWM(Pulse Width Modulation):脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形. PWM 的几个基本概念: 1) 占空比:占空比是指 ...

  6. [nRF51822] 11、基础实验代码解析大全 · 实验16 - 内部FLASH读写

     一.实验内容: 通过串口发送单个字符到NRF51822,NRF51822 接收到字符后将其写入到FLASH 的最后一页,之后将其读出并通过串口打印出数据. 二.nRF51822芯片内部flash知识 ...

  7. [nRF51822] 10、基础实验代码解析大全 · 实验15 - RTC

    一.实验内容: 配置NRF51822 的RTC0 的TICK 频率为8Hz,COMPARE0 匹配事件触发周期为3 秒,并使能了TICK 和COMPARE0 中断. TICK 中断中驱动指示灯D1 翻 ...

  8. [nRF51822] 9、基础实验代码解析大全 · 实验12 - ADC

    一.本实验ADC 配置 分辨率:10 位. 输入通道:5,即使用输入通道AIN5 检测电位器的电压. ADC 基准电压:1.2V. 二.NRF51822 ADC 管脚分布 NRF51822 的ADC ...

  9. [nRF51822] 8、基础实验代码解析大全 · 实验11 - PPI

    前一篇分析了前十个基础实验的代码,从这里开始分析后十个~ 一.PPI原理: PPI(Programmable Peripheral Interconnect),中文翻译为可编程外设互连. 在nRF51 ...

随机推荐

  1. Maven 专题

    目录: Maven的安装 Eclipse安装Maven插件 Nexus私服搭建 Maven+Nexus配置 发布自己的构件(至Nexus) 创建maven多模块工程group 整理中[...] 先放一 ...

  2. 我的Netty笔记

    pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...

  3. Ubuntu 14.10 下连接SuperVessel Cloud

    第一次创建实例后,系统会分配一个VPN用户,用于连接到系统. 官方帮助文档给出了使用方法 Linux VPN 客户端的配置方法 . 安装 VPNC: $ apt-get install vpnc $ ...

  4. P1072Hankson的趣味题

    传送 这个题一本通上有,但是为了增强我们的创新精神,思维能力balabala,书上的满分程序不全,要优化一下,在此写一下第二种方法 #include<iostream> #include& ...

  5. Python写的链接数据库存取数据

    Python写的链接数据库存取数据 #!/usr/bin/python # -*- coding: UTF-8 -*- from __future__ import print_function im ...

  6. Retrofit 使用方法

    public class MainActivity extends Activity { private ListView mListView; //private ImageListAdapter ...

  7. 如何获取阿里云OSS上每个文件夹的大小

    原文 https://help.aliyun.com/document_detail/88458.html?spm=a2c4g.11186623.2.11.792462b15oU02q OSS文件按照 ...

  8. HTTP协议的简单解析

    超文本传输协议(HTTP,HyperText Transfer Protocol)是用于从服务器传输超文本到本地浏览器的传输协议,是应用最为广泛的网络协议.B/S网络架构的核心是HTTP,掌握HTTP ...

  9. 第5章 IP地址和子网划分(1)_IP格式和子网掩码

    1. 二进制和十进制 (1)二进制与十进制的对应关系 ①128为数轴的中点,最高位为1.其后的数,二进制最高位均为1.其前面的数二进制最高位均为0. ②192为128-255中间的数,最高两位为1.2 ...

  10. hook mono实现Assembly.Load从指定路径读取文件

    mono-unity github: https://github.com/Unity-Technologies/mono/blob/unity-staging/mono/metadata/assem ...