#stm学习总结 (二十八)硬件随机数实验

28.1 随机数发生器简介

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

28.1.1 RNG 框图

在这里插入图片描述
STM32F407 的随机数发生器(RNG)采用模拟电路实现。此电路产生馈入线性反馈移位寄存器(RNG_LFSR)的种子,用于生成 32 位随机数。
该模拟电路由几个环形振荡器组成,振荡器的输出进行异或运算以产生种子。
RNG_LFSR 由专用时钟(PLL48CLK)按恒定频率提供时钟信息,因此随机数质量与 HCLK频率无关。当将大量种子引入 RNG_LFSR 后,RNG_LFSR 的内容会传入数据寄存器(RNG_DR)。
同时,系统会监视模拟种子和专用时钟 rng_clk,当种子上出现异常序列,或 rng_clk 时钟频率过低时,可以由 RNG_SR 寄存器的对应位读取到,如果设置了中断,则在检测到错误时,还可以产生中断。

28.1.2 RNG 寄存器

⚫ RNG 控制寄存器(RNG_CR)
在这里插入图片描述
⚫ RNG 状态寄存器(RNG_SR)
在这里插入图片描述
该寄存器我们仅关心最低位(DRDY 位),该位用于表示 RNG_DR 寄存器包含的随机数数据是否有效,如果该位为 1,则说明 RNG_DR 的数据是有效的,可以读取出来了。读 RNG_DR后,该位自动清零。
⚫ RNG 数据寄存器(RNG_DR)
在这里插入图片描述
RNG_DR 寄存器是只读寄存器,我们可以读取该寄存器获得 32 位随机数值。此寄存器在最多 40 个 PLL48CLK 时钟周期后,又可以提供新的随机数值。

28.2 硬件设计

1.例程功能
本实验使用 STM32F407 自带的硬件随机数生成器(RNG),获取随机数,并显示在 LCD 屏幕上。按 KEY0 可以获取一次随机数。同时程序自动获取 0~9 范围内的随机数,显示在屏幕上。LED0 闪烁用于提示程序正在运行。
2. 硬件资源
1)LED 灯
LED0 – PF9
2)独立按键
KEY0 – PE4
3)串口 1(PA9/PA10 连接在板载 USB 转串口芯片 CH340 上面)
4)正点原子 2.8/3.5/4.3/7 寸 TFTLCD 模块(仅限 MCU 屏,16 位 8080 并口驱动)
5)RNG(硬件随机数生成器)
3. 原理图
RNG 属于 STM32F407 内部资源,通过软件设置好就可以了。本实验通过配合按键获取随
机数和通过 LCD 显示。

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

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

相关文章

3dmax corona渲染器和vray渲染器哪个好?

Corona和Vray这两个渲染器都很不错,每个都有自己的优点和适用的情况,所以很难说哪个更好。 下面我简单给你对比一下: 1、操作界面:Vray的界面比较多,参数设置也复杂一点,初学者可能会觉得有点难上手。但C…

【cmu15445c++入门】(13)C++的std::promise

一、说明 std::promise 是C11并发编程中常用的一个类&#xff0c;常配合std::future使用。其作用是在一个线程t1中保存一个类型typename T的值&#xff0c;可供相绑定的std::future对象在另一线程t2中获取 二、代码 #include <chrono> #include <future> #includ…

零基础自学C语言|数据在内存中的存储

✈整数在内存中的存储 在讲解操作符的时候&#xff0c;我们就讲过了下面的内容&#xff1a; 整数的2进制表示方法有三种&#xff0c;即原码、反码和补码 三种表示方法均有符号位和数值位两部分&#xff0c;符号位都是用0表示"正"&#xff0c;用1表示"负"&…

【前端素材】推荐优质后台管理系统 Adminity平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理网站、应用程序或系统的管理界面&#xff0c;通常由管理员和工作人员使用。它提供了访问和控制网站或应用程序后台功能的工具和界面&#xff0c;使其能够管理用户、内容、数据和其他各种功能。 2、功能需求 后台管理系…

你用多久拿下了PMP(项目管理专业人士资格认证)?

大概1个月左右&#xff0c;一般的2个月左右也差不多了。 PMP考试现在是第七版的教材&#xff0c;跟考纲了&#xff0c;相对第六版的来说增加了很多敏捷题型&#xff0c;相对要灵活很多&#xff0c;难度也有所提升&#xff0c;我的备考经历给大家参考下&#xff0c;希望对你有帮…

移动互联网时代的APP上架流程和要点

摘要 本文将介绍移动应用程序上架的基本流程和要点&#xff0c;包括应用商店注册、APP材料准备、打包上传App、APP审核以及发布APP的详细步骤。此外&#xff0c;还会提到利用appuploder工具简化iOS应用上架步骤的方法&#xff0c; 引言 在移动互联网时代&#xff0c;开发一…

Python WikiGPT代码,GPT代码实战,逐行讲解GPT代码,教你完整写完GPT代码,GPT代码模板,一文教你学会写GPT代码

1.GPT基本介绍 在GPT1诞生之前&#xff0c;NLP领域已存在多种任务&#xff0c;比如文本分类、语义相似度&#xff0c;以及问答等&#xff0c;这些任务的共同点在于它们都是有监督学习&#xff0c;且各自维护不同的量级较小的训练语料。OpenAI为了进一步提升这些任务的预测效果&…

数据可视化基础与应用-02-基于powerbi实现连锁糕点店数据集的仪表盘制作

总结 本系列是数据可视化基础与应用的第02篇&#xff0c;主要介绍基于powerbi实现一个连锁糕点店数据集的仪表盘制作。 数据集描述 有一个数据集&#xff0c;包含四张工作簿&#xff0c;每个工作簿是一张表&#xff0c;其中可以销售表可以划分为事实表&#xff0c;产品表&am…

Android Tombstone 分析

1.什么是tombstone Tombstone是指在分布式系统中用于标记数据已被删除的记录&#xff0c;通常包含删除操作的时间戳和相关信息。 当一个动态库&#xff08;native程序&#xff09;开始执行时&#xff0c;系统会注册一些连接到 debuggerd 的signal handlers。当系统发生崩溃时…

selenuim【1】($x(‘xpath语法’)、WebDriverWait())

文章目录 初学selenuim记录1、执行driver webdriver.Chrome()后很久才打开浏览器2、浏览器多元素定位 $x(‘xpath语法’)3、打开浏览器driver.get("网址")执行了很久才开始定位元素&#xff1a;等待&#xff08;1&#xff09;driver.set_page_load_timeout(t)&#…

《Spring Security 简易速速上手小册》第5章 高级认证技术(2024 最新版)

文章目录 5.1 OAuth2 和 OpenID Connect5.1.1 基础知识详解OAuth2OpenID Connect结合 OAuth2 和 OIDC 5.1.2 重点案例&#xff1a;使用 OAuth2 和 OpenID Connect 实现社交登录案例 Demo 5.1.3 拓展案例 1&#xff1a;访问受保护资源案例 Demo测试访问受保护资源 5.1.4 拓展案例…

35. 【Linux教程】Linux 修改用户组

前面小节介绍了如何添加用户组&#xff0c;本小节介绍如何给已经添加的新用户组修改信息&#xff0c;从 /etc/group 文件信息可以看到&#xff0c;用户组的信息比用户信息项少&#xff0c;和 usermod 命令类似&#xff0c;用户组的信息可以使用 groupmod 命令修改。 1. groupmo…