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] nrf51 创建服务出现 NRF_ERROR_NO_MEM
下一篇:[单片机框架][bsp层][nrf51822][nrf51422][nrf51802][bsp_uart] UART配置和使用
推荐阅读最新更新时间:2024-10-13 10:52
设计资源 培训 开发板 精华推荐
- 【训练营】一条腿的小贱钟
- 使用 Analog Devices 的 LTC1771ES8 的参考设计
- FEBFHR1200-SPG01A-GEVB:高性能并联稳压器
- LTC1700、2.5V 输入、3.3V/1.8A 输出稳压器
- 使用 onsemi 的 ADP3161 的参考设计
- 使用 Analog Devices 的 AD9576BCPZ 的参考设计
- LTC2249、14 位、80Msps 低功率 3V 模数转换器的典型应用
- NCP81239GEVB:NCP81239 USB 供电 4 开关降压升压控制器
- 使用 Analog Devices 的 ADP1823ACPZ 的参考设计
- 【RA】基于瑞萨单片机的电子时钟,闹钟和温度显示器