随机发生器硬件功能

除了c标准库的随机发生器得到随机数以外;

stm也有一个硬件随机发生器,是通过种子信号模块模拟噪音得到的随机数;

RNG 简介


RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的 
随机数。

RNG 主要特性


● 提供由模拟量发生器产生的 32 位随机数
● 两个连续随机数的间隔为 40 个 PLL48CLK 时钟信号周期
● 通过监视 RNG 熵来标识异常行为(产生稳定值,或产生稳定的值序列)
● 可被禁止以降低功耗

得到一个信息,时间周期长;尽量使用中断;

结构框图

1、挂在AHB总线上,所以时钟在AHB

2、模拟种子可以得到转态位监控,通过线性反馈寄存器,最后在数据寄存器得到随机数;

程序

#include"rang.h""/****初始化成功返回1 不成功返回0****/
typedef struct{uint32_t random;//存随机数
bool random_end_flag;//随机数中断的标志
bool 	RNG_Clock_error_flag;//时钟错误标志,没用
bool  RNG_seed_error_flag;//种子模拟器的错误标志}random_struct;random_struct randmod_messge;uint8_t rang_init()
{uint32_t time=100000;uint8_t state;NVIC_InitTypeDef NVIC_InitStruct;RCC_AHB2PeriphClockCmd( RCC_AHB2Periph_RNG , ENABLE); //使能随机模块时钟RNG_Cmd(ENABLE);//使能随机发生器while(time--){if( RNG_GetFlagStatus(RNG_FLAG_DRDY) )//等待到可以产生随机数,{break;}}NVIC_InitStruct.NVIC_IRQChannel= HASH_RNG_IRQn;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStruct);RNG_GetFlagStatus(RNG_FLAG_DRDY);RNG_ITConfig(ENABLE);if( time == 0){state=0;}else{state=1;}return state;
}

 

void HASH_RNG_IRQHandler()
{if(RNG_GetFlagStatus(RNG_FLAG_DRDY)){randmod_messge.random=RNG_GetRandomNumber();randmod_messge.random_end_flag=true;}if(RNG_GetITStatus(RNG_IT_CEI)){randmod_messge.RNG_Clock_error_flag=true;RNG_ClearITPendingBit(RNG_IT_CEI);}if(RNG_GetITStatus(RNG_IT_SEI)){randmod_messge.RNG_seed_error_flag=true;RNG_ClearITPendingBit(RNG_IT_SEI);}}
void get_random_num( uint32_t *p)
{uint32_t temp;if(randmod_messge.random_end_flag == true ){temp =randmod_messge.random ;randmod_messge.random_end_flag == false;*p=temp;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/97574.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2000-2022年上市公司融资约束SA指数(含原始数据+计算方法+计算结果)

2000-2022年上市企业的融资约束指数(含原始数据计算方法计算结果) 1、时间:2000-2022年 2、范围:沪深A股上市公司 3、指标: 证券代码、证券简称、统计截止日期、是否发生ST或*ST或PT、是否发生暂停上市、行业代码、…

栈和队列OJ

一、括号的匹配 题目介绍: 思路: 如果 c 是左括号,则入栈 push;否则通过哈希表判断括号对应关系,若 stack 栈顶出栈括号 stack.pop() 与当前遍历括号 c 不对应,则提前返回 false。栈 stack 为空&#xff1…

音频修复和增强工具 iZotope RX 10 for mac激活最新

iZotope RX 10是一款音频修复和增强软件,主要特点包括: 声音修复:iZotope RX 10可以去除不良噪音、杂音、吱吱声等,使音频变得更加清晰干净。音频增强:iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限制器等…

Spring框架中如何处理事务管理

文章目录 **1. 声明式事务管理:****定义事务管理器:****配置事务通知:****将事务通知应用到方法:** **2. 编程式事务管理:****通过编程方式启动事务:** **3. 配置事务属性:** 🎈个人…

【2023集创赛】加速科技杯二等奖作品:基于ATE的电源芯片测试设计与性能分析

本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)加速科技杯二等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼…

DES和3DES等常见加解密的关键要素---安全行业基础篇3

DES和3DES DES和3DES是对称加密算法,其加密和解密的关键要素包括: 密钥:DES和3DES使用相同长度的密钥进行加密和解密。DES使用56位密钥,而3DES可以使用112位或168位密钥。密钥是保护数据安全的关键,必须保持机密并只…

SQLite简单介绍

一.简单介绍 SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低&…

【django开发手册】详解drf filter中DjangoFilterBackend,SearchFilter,OrderingFilter使用方式

💖 作者简介:大家好,我是Zeeland,开源建设者与全栈领域优质创作者。📝 CSDN主页:Zeeland🔥📣 我的博客:Zeeland📚 Github主页: Undertone0809 (Zeeland)&…

uniapp集成windicss的流程

一、背景介绍 Windicss是一个基于Tailwind CSS 灵感的库,它更快、更兼容,使用 TypeScript 构建。Windicss的目标是为了解决与Tailwind CSS 类似的问题,提供一个可以快速上手开发的组件库,让开发者不再需要繁琐地编写 CSS 样式。Windicss包含了几乎所有的 CSS 样式,因此开发…

大数据课程K20——Spark的SparkSql概述

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的SparkSQL由来; ⚪ 了解Spark的SparkSQL特点; ⚪ 了解Spark的SparkSQL优势; ⚪ 掌握Spark的SparkSQL入门; 一、SparkSQL概述 1. 概述 Spark为结构化数据处理引入了一个称…

Unity设置TextMeshPro文本超出范围显示...

TextMtshPro文本超出范围,展示省略。选择Overflow为Ellipsis。

高忆管理:总市值和流动市值区别?

总市值和活动市值是衡量一个公司或许财物商场价值的两个常用指标。总市值是指一个公司的悉数股票乘以当时股价的总值,而活动市值则是指一个公司的可自在买卖的股票乘以当时股价的总值。总市值和活动市值之间有着很大的不同,下面从多个角度进行分析。 首…