CubeMX系列教程——22 随机数RNG

时间:2024-05-22 13:27:54

这篇讲解如何使用STM32自带的RNG随机数发生器。RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的随机数。RNG 已通过 FIPS PUB 140-2(2001 年 10 月 10 日)测试,成功率达 99%。

使用STM32的串口打印随机数。复制串口打印工程,打开CubeMX工程,选择RNG外设,点击**,使能RNG的中断。

CubeMX系列教程——22 随机数RNG

配置RNG的时钟,随机数发生器(RNG)的时钟≤48MHz。

CubeMX系列教程——22 随机数RNG

CubeMX系列教程——22 随机数RNG

生成初始化代码,并且打开工程。

在main.c文件中添加测试代码,开启RNG的中断。

CubeMX系列教程——22 随机数RNG

在rng.c文件中添加测试代码,定义随机数变量RandomBuf,调取随机数完成回调函数HAL_RNG_ReadyDataCallback,将生成的随机数赋值给变量RandomBuf。重新开启RNG中断,因为在RNG中断函数中,RNG的中断使能被关闭。

CubeMX系列教程——22 随机数RNG

在main.c中添加测试代码,延迟1秒钟打印随机数的值,RandomBuf%100表示范围为0-99。

CubeMX系列教程——22 随机数RNG

编译下载到开发板,打开串口查看实验结果

CubeMX系列教程——22 随机数RNG

CubeMX系列教程——22 随机数RNG

随机数的范围在0-99,符合实验预期。