NRF51822之RNG

时间:2022-12-21 18:34:53

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

NRF51822之RNG的更多相关文章

  1. &lbrack;nRF51822&rsqb; 7、基础实验代码解析大全(前十)

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

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

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

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

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

  4. &lbrack;nRF51822&rsqb; 13、浅谈nRF51822和NRF24LE1&sol;NRF24LU1&sol;NRF24L01经典2&period;4G模块无线通信配置与流程

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

  5. &lbrack;nRF51822&rsqb; 12、基础实验代码解析大全 &&num;183&semi; 实验19 - PWM

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

  6. &lbrack;nRF51822&rsqb; 11、基础实验代码解析大全 &&num;183&semi; 实验16 - 内部FLASH读写

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

  7. &lbrack;nRF51822&rsqb; 10、基础实验代码解析大全 &&num;183&semi; 实验15 - RTC

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

  8. &lbrack;nRF51822&rsqb; 9、基础实验代码解析大全 &&num;183&semi; 实验12 - ADC

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

  9. &lbrack;nRF51822&rsqb; 8、基础实验代码解析大全 &&num;183&semi; 实验11 - PPI

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

随机推荐

  1. Idea开发环境中搭建Maven并且使用Maven打包部署程序

    1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...

  2. FireFox 一键清理缓存

    https://addons.mozilla.org/zh-CN/firefox/addon/empty-cache-button/

  3. js基础之面向对象

    一.基本概念 Array类 ————> 不具备实际的功能,只能用来构造对象 arr对象  ————> 有实际的功能,被类给构造出来 如:var arr=new Array(); proto ...

  4. SQL内连接-外连接join&comma;left join&comma;right join&comma;full join

    1.创建测试表test1及test2 SQL)); 表已创建. SQL)); 表已创建. ,'name1'); ,'name2'); ,'name3'); ,'name4'); ,'name5'); ...

  5. C&num;后台绑定ComboBox

    C# using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syste ...

  6. Chapter 1 First Sight——5

    "He's in a wheelchair now," Charlie continued when I didn't respond, 他现在在轮椅上了,没等我回答查理斯就继续说 ...

  7. 单源最短路-dijkstra算法(未优化)

    bool used[maxn]; int g[maxn][maxn]; // 边未联系的填充为INF int d[maxn]; void dijkstra(int s){ memset(g,false ...

  8. Python小白绘图 哆唻A梦 turtle真的很强大!

    # -*- coding: utf-8 -*- """ Created on Sat Nov 10 22:02:32 2018 @author: 10029 " ...

  9. vscode git设置远程仓库码云

    https://www.cnblogs.com/klsw/p/9080041.html

  10. 第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图

    第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图 1.基本概念 2.反爬虫的目的 3.爬虫和反爬的对抗过程以及策略 scra ...