在许多应用程序中,需要生成真正的随机数。对于STM32微控制器,STMicroelectronics提供了用于生成真实随机数的硬件模块,称为真随机数发生器(True Random Number Generator,TRNG)。TRNG基于物理过程,如电压噪声或热噪声,以提供高度随机的数据。
下面是在STM32微控制器上使用TRNG生成真实随机数的步骤:
- 配置CRNGEN位:首先,需要使能TRNG模块。TRNG模块位于RCC(Reset and Clock Control)寄存器中。要使能TRNG,将RCC->AHB2ENR寄存器中的CRYPEN位和RCC->AHB2ENR寄存器中的RNGEN位置1。
RCC->AHB2ENR |= RCC_AHB2ENR_CRYPEN | RCC_AHB2ENR_RNGEN;
- 等待TRNG就绪:启用TRNG后,需要等待TRNG模块准备好生成随机数。可以使用RNG->SR寄存器的DRDY位来检查TRNG的就绪状态。
while ((RNG