20:HAL--RNG

一:RNG

伪随机数就是rand函数产生的数。

F1系列的没有RNG,使用本次说的都是F407的,我使用的是STM32F407VET6

B:框架

C:寄存器

 

 

 

 /*RNG_SR寄存器的DRDY位*/
while ((__HAL_RNG_GET_FLAG(&rng_handle, RNG_FLAG_DRDY) == RESET) && (retry < 10000)) /* 等待RNG准备就绪 */{retry++;delay_us(10);}if (retry >= 10000){return 1; /* 随机数产生器工作不正常 */}return 0;

 D:配置过程

STM32F407VET6不需要,单独配置时钟。不需要下面的函数

HAL_RCCEx_PeriphCLKConfig() 

二:历程 

按键我们采用的为电容按键

#include "stm32f4xx.h"                  // Device header
#include "delay.h"
/*RNG_SR寄存器的DRDY位*/
RNG_HandleTypeDef rng_handle;   /* RNG句柄 *//*** @brief       初始化RNG* @param       无* @retval      0,成功;1,失败*/
uint8_t rng_init(void)
{uint16_t retry = 0;rng_handle.Instance = RNG;   HAL_RNG_DeInit(&rng_handle);HAL_RNG_Init(&rng_handle);    /* 初始化RNG *//*RNG_SR寄存器的DRDY位*/while ((__HAL_RNG_GET_FLAG(&rng_handle, RNG_FLAG_DRDY) == RESET) && (retry < 10000)) /* 等待RNG准备就绪 */{retry++;delay_us(10);}if (retry >= 10000){return 1; /* 随机数产生器工作不正常 */}return 0;
}/*** @brief       RNG底层驱动,时钟源设置和使能* @note        此函数会被HAL_RNG_Init()调用* @param       hrng:RNG句柄* @retval      无*/
void HAL_RNG_MspInit(RNG_HandleTypeDef *hrng)
{		/*F407不需要单独配置*/
//    RCC_PeriphCLKInitTypeDef RNGClkInitStruct;//    /* 设置RNG时钟源,选择PLL,时钟为480MHz */
//    RNGClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RNG;    /* 设置RNG时钟源 */
//    RNGClkInitStruct.RngClockSelection = RCC_RNGCLKSOURCE_PLL;    /* RNG时钟源选择PLL */
//    HAL_RCCEx_PeriphCLKConfig(&RNGClkInitStruct);__HAL_RCC_RNG_CLK_ENABLE(); /* 使能RNG时钟 */
}/*** @brief       得到随机数* @param       无* @retval      获取到的随机数(32bit)*/
uint32_t rng_get_random_num(void)
{uint32_t randomnum;HAL_RNG_GenerateRandomNumber(&rng_handle, &randomnum);return randomnum;
}/*** @brief       得到某个范围内的随机数* @param       min,max: 最小,最大值.* @retval      得到的随机数(rval),满足:min<=rval<=max*/
int rng_get_random_range(int min, int max)
{ uint32_t randomnum;HAL_RNG_GenerateRandomNumber(&rng_handle, &randomnum);return randomnum % (max - min + 1) + min;
}
#include "stm32f4xx.h"                  // Device header
#include "sys.h"
#include "delay.h"
#include "LED.h"
#include "UART.h"
#include <stdarg.h>
#include "stdio.h"
#include "TTP223.h"
#include "RNG.h"
extern TIM_HandleTypeDef TIM_Handle;   /*通用定时器5--32位*/
uint32_t random_num,scope_num;
uint8_t num=0;
int main(void)
{HAL_Init();                                 /* 初始化HAL库 */        Clock_HSE_Init(8,336,RCC_PLLP_DIV2,7);      /* 设置时钟,168Mhz */delay_init(168);                            /* 延时初始化 */Uart_Init(115200);TTP223_Init(16800-1);  //6.65srng_init();while(1){if (tpad_scan(1)&&num==0)                   /* 成功捕获到了一次上升沿(此函数执行时间至少15ms) */{		num=1;random_num=rng_get_random_num();printf("产生的随机数为:%d\r\n",random_num);delay_ms(10);}else if (tpad_scan(1)&&num==1)                   {		num=0;random_num=rng_get_random_num();printf("产生的范围随机数为:%d\r\n",rng_get_random_range(10,100));delay_ms(10);}}
}

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

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

相关文章

Oracle start with connect BY 死循环

解决办法 检查start with前有没有where条件&#xff0c; 如果有的话&#xff0c;套一层select&#xff0c;再 Oracle start with connect BY

Opencv中的直方图(1)计算反向投影直方图函数calcBackProject()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算直方图的反向投影。 cv::calcBackProject 函数计算直方图的反向投影。也就是说&#xff0c;类似于 calcHist&#xff0c;在每个位置 (x, y)…

PostgreSQL的repmgr工具介绍

PostgreSQL的repmgr工具介绍 repmgr&#xff08;Replication Manager&#xff09;是一个专为 PostgreSQL 设计的开源工具&#xff0c;用于管理和监控 PostgreSQL 的流复制及实现高可用性。它提供了一组工具和实用程序&#xff0c;简化了 PostgreSQL 复制集群的配置、维护和故障…

CSS解析:定位和层叠上下文

许多开发人员对定位的理解很粗略&#xff0c;如果不完全了解定位&#xff0c;就很容易给自己挖坑。有时候可能会把错误的元素放在其他元素前面&#xff0c;要解决这个问题却没有那么简单。 一般的布局方法是用各种操作来控制文档流的行为。定位则不同&#xff1a;它将元素彻底…

虚幻地形高度图生成及测试

虚幻地形高度图生成及测试 虚幻引擎地形系统将高度数据存储在高度图中&#xff0c;这是一个灰阶图像&#xff0c;使用黑白色值来存储地貌高程。在高度图中&#xff0c;纯黑色值表示最低点&#xff0c;纯白色值表示最高点。支持16位灰阶PNG、8位灰阶r8及16位灰阶r16格式。 本文…

华为 HCIP-Datacom H12-821 题库 (8)

有需要题库的可以看主页置顶 1.在 DHCP 运行过程中&#xff0c;如果客户端 IP 地址在相约过去 87.5%还没有完成续约的话&#xff0c;客户将发送什么报文进行再次续约&#xff1f; A、DHCP discover 广播报文 B、DHCP release 单播报文 C、DHCP request 广播报文 D、DHCP reques…

硬刚苹果还得是华为

文&#xff5c;琥珀食酒社 作者 | 璇子 牛皮啊 华为发三折叠不意外 意外的是 这各种翻转简直颠覆想象 市面上没见过这么能“翻转”的&#xff1f; 要不怎么说硬刚苹果 还得看华为 就跟你同天怎么了&#xff1f; 拼创新、拼技术、拼热度 你就说哪比你差吧&#xff1f…

使用modelsim小技巧

1、当我们不想打开modelsim gui界面进行工程仿真时&#xff0c;modelsim提供了命令仿真的方法 vsim -c -do test_sim.do执行上述命令可以在不打开gui界面的情况下直接仿真工程 2、当我们代码里有systemverilog语法时编译代码方式 vlog -sv -sv09compat defineT133 test.v

基于VUE的校园二手物品交易管理系统的设计与实现 (含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于VUE的校园二手物品交易管理系统8拥有两种角色 管理员&#xff1a;闲置物品管理、订单管理、用户管理 用户&#xff1a;登录注册、购物车、发布闲置物品、评论、发货、收货地址管理等…

电力设计院10大排行榜!这个大院屠榜!

今天晚上阅读了中国电力规划设计协会《2022年度电力勘测设计行业统计分析报告》&#xff0c;这本报告是依据协会会员企业统计报表数据进行编制分析的。报告共收集了167家勘测设计企业上报的数据信息&#xff0c;统计的企业数量较2021 年166家企业增加1 家。 按业务板块划分为&…

element ui form 表单出现英文提示的解决方案

场景再现&#xff1a; 在使用 form 表单的时候&#xff0c;一般都需要对表单元素进行验证&#xff0c;错误就出现在了这里&#xff0c;除了配置的错误信息&#xff0c;还会出现一个 英文校验提示&#xff0c;如下图&#xff1a; 解决方案 出现的原因是在el-form-item中使用…

python转换并提取pdf文件中的图片

#安装fitz包 pip install pymupdf 脚本如下所示&#xff1a; import fitz import re import os import time import sysarguments sys.argvfor arg in arguments:print(arg)def file_name_list(base_dir):for i, j, k in os.walk(base_dir):name [i.replace(.pdf, ) for i …

Tensorflow2 如何扩展现有数据集(缩放、随机旋转、水平翻转、平移等),从而提高模型的准确率 -- Tensorflow自学笔记14

实际生活中的数据集&#xff0c;往往不是标准的数据&#xff0c;而是有倾斜角度、有旋转、有偏移的数据&#xff0c;为了提高数据集的真实性&#xff0c;提高模型预测的准确率&#xff0c;可以用ImageDataGenerator函数来扩展数据集 import tensorflow as tffrom tensorflow.k…

萌新5:日历游戏(博弈论,递推找规律)

题目描述 Alice 和 Bob 在玩一个游戏&#xff0c;他们先从 2000.1.1 到 2024.8.1 这个日期之间&#xff08;不包括2024.8.1&#xff09;随意抽取一个日期出来。然后他们轮流对这个日期进行操作&#xff1a; 把日期的天数加 1&#xff0c;例如&#xff1a;2000.1.1 变到 2000.1…

【0325】Postgres内核之 VACUUM(FULL) 创建 BufferAccessStrategy object(16)

1. 创建 BufferAccessStrategy object 这部分是属于Postgres内核中 “后端进程私有缓冲区环管理” 内容。 GetAccessStrategy() 函数 用于创建一个 BufferAccessStrategy 对象,该对象将在当前内存上下文中分配。 该函数原型如下: BufferAccessStrategy GetAccessStrategy(…

(二)ASP.NET Core WebAPI项目的启动地址设置

上一篇介绍了ASP.NET Core WebAPI项目创建&#xff0c;可参考&#xff1a; 1.webAPI的访问地址 1) 启动时&#xff0c;选择CoreWebAPI(项目名称)运行项目 可以看到打开浏览器后的地址是&#xff1a;applicationUrl"\"launchUrl 2) 启动时&#xff0c;选择IIS Expre…

Ansys Zemax | 在OpticStudio中仿真单模光纤耦合

附件下载 联系工作人员获取附件 准确分析耦合效率在光纤耦合系统的设计中至关重要。本文演示了如何在OpticStudio中使用多种光纤耦合效率分析。 概要 OpticStudio序列模式可以很好地模拟单模光纤耦合效率。本文演示了如何设置耦合系统&#xff0c;并研究了序列模式下可用于…

redis分布式锁和lua脚本

业务场景&#xff1a;多个线程对共同资源的访问&#xff1a;库存超卖/用户重复下单的原因 解决方法一&#xff1a;利用jvm内置锁&#xff0c;将非原子性操作变成原子性操作 Synchronized锁的是对象&#xff0c;对象必须是单例的。锁的是this,代表当前所在的类&#xff0c;这个…

RabbitMQ 基础架构流程 数据隔离 创建用户

介绍 publisher&#xff1a;消息发送者-exchange&#xff1a;交换机&#xff0c;复制路由的消息-queue&#xff1a;队列&#xff0c;存储消息consumer&#xff1a;消息的消费者 工作流程 publisher消息发送者 -> exchange 交换机 -> queue 队列 -> consumer 消息的消…

流动会场:以声学专利为核心的完美移动场地—轻空间

流动会场作为一种全新的活动场所选择&#xff0c;凭借其便捷的移动性与先进的声学设计&#xff0c;正逐渐成为各类演出、会议和文化活动的热门场地。其独特之处不仅在于搭建速度快、灵活性高&#xff0c;还在于其核心技术——声学专利的强大支持。 专利声学设计&#xff0c;打造…