这篇讲解如何使用STM32自带的RNG随机数发生器。RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的随机数。RNG 已通过 FIPS PUB 140-2(2001 年 10 月 10 日)测试,成功率达 99%。
使用STM32的串口打印随机数。复制串口打印工程,打开CubeMX工程,选择RNG外设,点击**,使能RNG的中断。
配置RNG的时钟,随机数发生器(RNG)的时钟≤48MHz。
生成初始化代码,并且打开工程。
在main.c文件中添加测试代码,开启RNG的中断。
在rng.c文件中添加测试代码,定义随机数变量RandomBuf,调取随机数完成回调函数HAL_RNG_ReadyDataCallback,将生成的随机数赋值给变量RandomBuf。重新开启RNG中断,因为在RNG中断函数中,RNG的中断使能被关闭。
在main.c中添加测试代码,延迟1秒钟打印随机数的值,RandomBuf%100表示范围为0-99。
编译下载到开发板,打开串口查看实验结果
随机数的范围在0-99,符合实验预期。