[单片机框架][bsp层][nrf51822][nrf51422][nrf51802][bsp_rng] rng随机数生成器配置和使用

发布者:TranquilMind最新更新时间:2022-09-06 来源: csdn关键字:nrf51822  nrf51422  rng 手机看文章 扫描二维码
随时随地手机看文章

Random Number Generator (RNG)

The Random Number Generator (RNG) generates true non-deterministic random numbers derived from thermal noise that are suitable for cryptographic purposes. The RNG does not require a seed value.


随机数生成器(RNG)从热噪声中生成真实的非确定性随机数,适合于加密目的。 RNG不需要种子值。


/********************************************************************************

* @file    bsp_rng.c

* @author  jianqiang.xue

* @version V1.0.0

* @date    2021-07-09

* @brief   随机数生成

********************************************************************************/

/* Includes ------------------------------------------------------------------*/

#include

#include


#include "RTE_Components.h"

#include CMSIS_device_header

#include "nrf_rng.h"

#include "nrf_error.h"


#include "bsp_rng.h"


/* Private Function Prototypes -----------------------------------------------*/

/**

 * @brief  启动硬件随机数,并返回一个随机数值

 * @note   NULL

 * @retval 0-255 随机数

 */

static uint8_t get_random_vector(void)

{

    uint8_t value;


    NRF_RNG->CONFIG      = 1;

    NRF_RNG->TASKS_START = 1;

    // 生成新的随机数并写入VALUE寄存器

    NRF_RNG->EVENTS_VALRDY = 0;

    while (NRF_RNG->EVENTS_VALRDY == 0)

    {

    }

    value = NRF_RNG->VALUE;

    NRF_RNG->TASKS_STOP = 1;

    NRF_RNG->INTENCLR   = 0;

    NRF_RNG->CONFIG     = 0;

    return value;

}


/**

 * @brief  得到一组随机数

 * @note   NULL

 * @param  pbuff: 缓存区

 * @param  size: 数量

 * @retval None

 */

void random_vector_generate(uint8_t *pbuff, uint8_t size)

{

    uint8_t i;


    for (i = 0; i < size; i++)

    {

        pbuff[i] = get_random_vector();

    }

}



/********************************************************************************

* @file    bsp_rng.h

* @author  jianqiang.xue

* @version V1.0.0

* @date    2021-07-09

* @brief   随机数生成

********************************************************************************/


#ifndef __BSP_RNG_H

#define __BSP_RNG_H


/* Includes ------------------------------------------------------------------*/

#include


/* Public Function Prototypes ------------------------------------------------*/


void random_vector_generate(uint8_t * pbuff, uint8_t size);

#endif


关键字:nrf51822  nrf51422  rng 引用地址:[单片机框架][bsp层][nrf51822][nrf51422][nrf51802][bsp_rng] rng随机数生成器配置和使用

上一篇:[nrf51822] nrf51 创建服务出现 NRF_ERROR_NO_MEM
下一篇:[单片机框架][bsp层][nrf51822][nrf51422][nrf51802][bsp_uart] UART配置和使用

推荐阅读最新更新时间:2024-10-13 10:52

[ANT+][nrf51422][s210] 自行车车灯 通用页80(0x50)–制造商标识
通用数据页80传输制造商的ID,型号和硬件版本。 注意,该数据页不得在共享通道上使用。当此数据页在广播频道上发送时,应始终描述发送该页的ANT+自行车灯。包含灯光索引字段的数据页16(0x10)应在共享通道上使用,并且主灯应使用它来描述辅助灯的制造商信息。 有关此页面的详细信息,请参考ANT+ Common Pages文档。 /* Copyright (c) 2015 Nordic Semiconductor. All Rights Reserved. * * The information contained herein is property of Nordic Semiconductor ASA. * T
[单片机]
PIC单片机C语言编程的基本框架
简介:PIC单片机C语言编程的基本框架 基于PICC编译环境编写PIC单片机程序的基本方式和标准C程序类似,程序一般由以下几个主要部分组成: 1.在程序的最前面用#include预处理指令引用包含头文件,其中必须包含一个编译器提供的“pic.h”文件,实现单片机内特殊寄存器和其它特殊符号的声明; 2. 用“_CONFIG”预处理指令定义芯片的配置位; 3. 声明本模块内被调用的所有函数的类型,PICC将对所调用的函数进行严格的类型匹配检查; 4. 定义全局变量或符号替换; 5. 实现函数(子程序),特别注意main函数必须是一个没有返回的死循环。 下面为一个C程序的范例,供大家参考。 #includ
[单片机]
[单片机框架][bsp][cx32l003][bsp_exti] EXTI配置和使用
一、 主体不同 内部中断:断是一个算法指令,是由软中断指令启动的中断。 外部中断:是单片机实时地处理外部事件的一种内部机制。 二、机制不同 内部中断:执行除法指令时,出现除数为0或商超过寄存器所能表达的范围,则产生类型为0 的内部中断。是优先级最高的内部中断。 外部中断:当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。 /******************************************************************************** * @file bsp_exti.
[单片机]
E2.2 单片机开源框架--时间片轮询--思路
时间片轮询--思路 实际上大部分文章把时间片轮询框架讲复杂了,它的内涵是: 将每个工作划分为一个子任务,你可以把子任务看成一个个工作人员 每个任务通过主程序定时去检查或者询问,你可以把主程序看成一位领导者 领导定时询问每位工作人员你准备好了吗?或者工作做完了吗?进度如何? 假设你是其中的一位工作人员 你的工位位置有几个信号灯(指示牌),空闲、计数、准备好、忙碌中,这就是工作状态(状态机的状态) 领导只是问你一句你的工作状态,简单直接点,你就回复你现在的状态是什么就行了 接着领导又去问其他人员 如果你已经准备好了去做一件事了,那就去做,领导会把一定的资源给你(例如材料、工具、场地,这时候其他人如果同时也要用这些东西可
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved