RNG

您所在的位置:网站首页 stm32f4国产 RNG

RNG

2024-07-17 02:02:42| 来源: 网络整理| 查看: 265

使用芯片===>STM32F429IGT6

使用串口输出一组随机数,随机数范围(1-50)

(制作不易,希望大佬能给个赞支持下小丁)

目录

一、RNG-硬件随机数发生器简介

1、随机数发生器框图

2、相关寄存器

二、实验程序

1、main.c

2、rng.c

3、rng.h

三、实验结果

四、结束语

一、RNG-硬件随机数发生器简介

STM32自带了硬件随机数发生器(RNG),RNG处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个32位的随机数。 两个连续的随机数的间隔为40个PLL48CLK时钟信号周期。 通过监控RNG熵来标识异常行为。 可以禁止来降低功耗。

1、随机数发生器框图

①、控制寄存器就是设置一些参数,状态寄存器来反映出相对的状态,RNG_CLk来提供时钟(不是框图的核心)。

②、核心为模拟种子,模拟种子表示这个随机数是怎么发生的。

③、模拟种子产生的随机数,随机数会保存到LFSR这个寄存器里面,当随机数在LFSR存储完成后,会将随机数传输到RNG_DR数据寄存器中。然后我们就可以将随机数从RNG_DR中读取出来。

④、在产生随机数的过程中,可以通过“时钟检查器和故障检测器”来检查是否出现故障,随机数是否正常的输出等。

2、相关寄存器

①、控制寄存器RNG_CR

②、状态寄存器RNG_SR

③、数据寄存器RNG_DR

二、实验程序

首先对随机数函数进行初始化,随后获取随机数,将获取到的随机数通过公式转换为相应应范围内的随机数,并把两个数一起输出出来

随机数转换到相应范围内的随机数,是通过将随机数在范围内的  "(最大值-最小值+1)取余+最小值"  得到的。

1、main.c /************************************************************************** **作者: 小丁工程 **时间: 2021.01.16 ***************************************************************************/ #include "sys.h" //---------------------主函数------------------------------------------------- int num,nums; int main(void) { HAL_Init();//========================初始化HAL库 Stm32_Clock_Init(360,25,2,8);//======设置时钟,180Mhz delay_init(180);//===================初始化延时函数 uart_init(115200); while(RNG_Init()) //初始化随机数发生器 { delay_ms(200); printf("RNG Trying...\r\n"); } while(1) { delay_ms(10); num=RNG_Get_RandomNum(); //获得随机数 nums=RNG_Get_RandomRange(1,50); printf("%d----%d\r\n",num,nums); } } //---------------------end----------------------------------------------------- 2、rng.c #include "rng.h" #include "delay.h" RNG_HandleTypeDef RNG_Handler; //RNG句柄 //初始化RNG u8 RNG_Init(void) { u16 retry=0; RNG_Handler.Instance=RNG; HAL_RNG_Init(&RNG_Handler);//初始化RNG while(__HAL_RNG_GET_FLAG(&RNG_Handler,RNG_FLAG_DRDY)==RESET&&retry=10000) return 1;//随机数产生器工作不正常 return 0; } void HAL_RNG_MspInit(RNG_HandleTypeDef *hrng) { __HAL_RCC_RNG_CLK_ENABLE();//使能RNG时钟 } //得到随机数 //返回值:获取到的随机数 u32 RNG_Get_RandomNum(void) { return HAL_RNG_GetRandomNumber(&RNG_Handler); } //生成[min,max]范围的随机数 int RNG_Get_RandomRange(int min,int max) { return HAL_RNG_GetRandomNumber(&RNG_Handler)%(max-min+1) +min; } 3、rng.h #ifndef __RNG_H #define __RNG_H #include "sys.h" u8 RNG_Init(void); //RNG初始化 u32 RNG_Get_RandomNum(void);//得到随机数 int RNG_Get_RandomRange(int min,int max);//生成[min,max]范围的随机数 #endif 三、实验结果

每次输出的头一个数为单片机产生的随机数,第二个数是转换后1-50的随机数。

四、结束语

这个例程相对来说还是比较简单的,希望能对你有些帮助。

(例程及相关资料参考于-->原子光盘,侵删)



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭