登录/注册

STM32 随机函数

更多

在STM32中生成随机数主要有两种方法:硬件随机数生成器(RNG)和软件伪随机数生成器。以下是详细说明:


1. 硬件随机数生成器(RNG)

适用型号:STM32F2/F4/F7/H7/L4/G0/G4等系列(需查看芯片手册确认支持)
特点:基于物理噪声源,生成真随机数,安全性高。

使用步骤(基于HAL库)

// 初始化RNG
RNG_HandleTypeDef hrng;
hrng.Instance = RNG;

void MX_RNG_Init(void) {
  hrng.Instance = RNG;
  if (HAL_RNG_Init(&hrng) != HAL_OK) {
    Error_Handler();
  }
}

// 生成随机数
uint32_t random_value = 0;
HAL_StatusTypeDef status = HAL_RNG_GenerateRandomNumber(&hrng, &random_value);
if (status == HAL_OK) {
  // 成功获取随机数(random_value)
}

关键注意事项


2. 软件伪随机数生成器(标准库函数)

适用型号:所有STM32型号
特点:使用算法生成伪随机数,依赖种子值,不保证绝对随机。

使用步骤:

#include <stdlib.h>

// 设置随机种子(关键!建议使用ADC采集未连接引脚噪声或定时器值)
void init_random_seed(void) {
  uint32_t seed = HAL_GetTick();  // 例:用系统滴答时钟作种子
  srand(seed);  
}

// 生成随机数
int random_num = rand();  // 返回0到RAND_MAX之间的整数
int scaled_num = rand() % 100;  // 生成0-99的随机数

种子设置技巧


选择建议

方法 适用场景 优缺点
硬件RNG 加密、密钥生成、高安全性场景 真随机数,但部分型号不支持
软件伪随机 一般需求(如游戏、简单算法) 依赖种子质量,实现简单

常见问题

  1. RNG初始化失败?

    • 检查时钟配置(PLL是否使能,RNG时钟频率需≤48MHz)。
    • 在CubeMX中启用RNG并生成初始化代码。
  2. 伪随机数重复?

    • 确保种子来源随机(避免使用固定值)。
    • 结合多个熵源(如定时器+ADC+唯一ID)。
  3. 获取特定范围随机数

    // 生成[min, max]范围的随机整数
    int range_random = min + rand() % (max - min + 1);

通过上述方法,您可根据需求在STM32中实现可靠的随机数生成。务必优先确认芯片是否支持硬件RNG!

stm32delay函数怎么写

STM32的延时函数可以使用SysTick定时器来实现。SysTick定时器是一个24位的计数器,它可以在每个时钟周期自动减少计数值,直到计数值为0时触发中断。我们可以利用SysTick定时器的特性

2023-12-21 17:53:28

STM32函数SystemInit()详解

STM32库函数SystemInit()详解

2023-09-18 15:45:50

应用笔记 | 浅谈STM32库里的回调函数

关键字:回调函数,HAL库   目录预览 1.回调函数 2.STM32固件库里的回调函

2023-09-14 17:10:06

单片机STM32F1随机数生成探索与实践(基于CUBEMX和KEIL5)

随机数广泛地用于游戏、以及测试环境中,本文产生的随机数将用于测试排序算法性能。一些高端型号的单片机具有硬件的随机数发生器,如

资料下载 哈哈哈 2021-12-31 19:12:10

STM32F4 HAL库函数说明下载

STM32F4 HAL库函数说明下载

资料下载 jf_59593610 2021-05-26 09:27:42

随机变量函数的分布的学习课件免费下载

本文档的主要内容详细介绍的是随机变量函数的分布的学习课件免费下载。

资料下载 chenhangjack 2020-06-17 08:00:00

STM32 IAR的库函数资料免费下载

本文档的主要内容详细介绍的是STM32 IAR的库函数资料免费下载。

资料下载 佚名 2020-03-27 09:48:25

如何使用随机模拟技术和神经网络讲解随机机会约束的规划问题

为更有效地求解随机机会约束规划问题,提出一种基于克隆选择算法( CSA) 、随机模拟技术及神经网络的混合智能算法。采用随机模拟技术产生

资料下载 佚名 2019-11-27 15:02:56

CH32和stm32的库函数一样吗?

CH32和stm32的库函数一样吗? STM32是ST公司推出的一款32位微控制器,其拥有强大的性能及丰富的外设功能,实现了嵌入式应用的功能。而

2023-08-16 11:15:57

stm32随机的使用

stm32伪随机的使用前言最近使用了一款芯片,内置随机数发生器,封装了一个 8 Byte的指令接口,mcu每次发送指令给芯片,芯片就会返回 8

2021-08-23 07:08:24

STM32程序无法进入main函数的解决方法

很多人在基于STM32单片机项目开发过程中,会遇到STM32程序无法进入main的现象,在这篇文将分享STM32程序无法进入main

2021-07-22 16:18:35

stm32中的io函数 STM32中的IO操作

STM32系列单片机芯片的库函数有很多种,而负责IO操作的库函数是GPIO,GPIO函

2021-07-22 15:29:36

「ALIENTEK 阿波罗 STM32F767 开发板资料连载」第23章 硬件随机

明的是,库函数中随机数发生器相关的操作在文件 stm32f7xx_hal_rng.c 和对应的头文件

2020-05-14 10:42:36

Python随机数模块的随机函数使用

随机数在日常的应用开发中,使用的比较多,比如抽奖游戏,如果你不依靠随机数,就会变的由规律,容易被人发现规律。比如我们的斗地主游戏,它的发牌程序也会随机

2020-01-18 17:55:00

随机函数不是很随机

RAND函数在每次芯片供电时给出相同的序列。这就是为什么我在s rand(TMR0)开始时使用简单的种子。然而,即使程序运行了很长时间,程序中的rand函数也总是返回相同的值。ISR每次返回时

2019-09-26 10:30:21
7天热门专题 换一换
相关标签