在裸机下官方已经提供另一个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. bzoj4183: tree

    Description 自底向上模拟,原地操作以节省空间 #include<bits/stdc++.h> unsigned n,a,b,c,v[],mx,ans=; int main(){ ...

  2. P【1012】拼数

    十分蒟蒻...(还是看别人的博才过的...) 题解 #include<cstdio>#include<cstring>#include<algorithm>#inc ...

  3. react组件的数据传递

    在react中,为了解决html标签构建应用的不足,将公共的功能单独抽离成一个文件作为一个组件,在使用的地方按需引入,既然是组件彼此调用,就会涉及到父子组件的通信,下面主要来总结简单的组件通信. 1, ...

  4. Sqoop-1.4.6安装部署及详细使用介绍

    之所以选择Sqoop1是因为Sqoop2目前问题太多.无法正常使用,综合比较后选择Sqoop1. Sqoop1安装配置比较简单 一.安装部署 (1).下载安装包 下载地址:http://archive ...

  5. mysql监测工具

    可视性是系统设计的最佳境界,MySQL 也不例外.一旦完成了 MySQL 环境的搭建.运行并调优,您千万不要认为已经万事大吉了. 数据库环境既会受到来自系统更改或流量负荷的影响,也会遇到例如流量高峰. ...

  6. Rstdio 中print中文乱码

    在Consol中输入 Sys.setlocale("LC_ALL","Chinese") 即可

  7. load() 方法

    jQuery ajax - load() 方法 $("button").click(function(){ $("div").load('demo_ajax_l ...

  8. [UE4]使用UFUNCTION注意事项

    #pragma once #include "CoreMinimal.h" #include "Blueprint/UserWidget.h" #include ...

  9. third party sales process 继续说

    Trading company: A vendor或production plant: B END Customer: C third party sales与individual purchasin ...

  10. 常见的web安全及防护原理

    1.0 sql注入 sql注入原理:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. sql注入防护: 1.永远不要信任用户的输入,要 ...