[评测分享]
【NUCLEO-U083RC试用】随机数生成模块测试(RNG)
#板卡评测
 
2072 人阅读
|
0 人回复
|
2024-07-07 
 
 
 
 
TA的每日心情  | 开心 2024-7-7 06:54 | 
|---|
 
  签到天数: 2 天 连续签到: 2 天 [LV.1]初来乍到 
童生 
 
 
	- 积分
 - 62
 
 
 
 
 | 
 
 
【NUCLEO-U083RC试用】随机数生成模块测试(RNG) 
 
 
 
RNG简介 
随机数发生器(Random Number Generators,RNG),用于生成随机数的程序或者硬件。 
我们从参考手册RM0503看到RNG更详细的介绍。 
   
 
RNG的主要应用场景 
验证码、密码学、概率学、统计学、游戏等 
 
RNG的框图如下: 
    
 
 
下面我们用CubeMX做一个初始化配置: 
打开CubeMX软件,我们使用的开发板型号是NUCLEO-U083RC,我们选择 
Start My project from ST Board 
 
 
输入框中输入STM32U0,选择STM32U0复选框,选中我们的开发板,点击Start Project 
    
 
 
基于板子接口的一些配置会自动配置好。 
 
我们在Pinout&Configuriaiton下输入RNG后回车, 可以看到RNG在Security选项下面, 
我们选中RNG配置栏里面的 Activated复选框。 
    
 
 
 
我们点击Clock Configuration,弹窗提醒自动配置,点击Yes     
 
 
此时RNG Clock自动配置好 
 
    
 
Project Manager下设置好工程名字,工程路径后, 点击GENERATE CODE 
我们的初始化配置工程生成好了。 
 
 
 
之后测试程序编写: 
我们可以看到,工程已经为我们进行了RNG模块的初始化,我们进行测试程序编写即可。 
  
  
我们编写的测试程序如下: 
void Get_RngNum_test(void) 
{ 
        uint32_t nrng; 
        nrng = 0; 
        if (HAL_OK == HAL_RNG_GenerateRandomNumber(&hrng,&nrng)) 
        { 
                printf("Get RngNum is %d\r\n",nrng); 
        } 
        else 
        { 
                printf("Get RngNum Failed !\r\n"); 
        } 
} 
 
在主函数中进行测试函数的调用 
 
while (1) 
  { 
    /* USER CODE END WHILE */ 
 
    /* USER CODE BEGIN 3 */ 
        Get_RngNum_test(); 
 
        HAL_Delay(100); 
  } 
 
我们把程序编译后, 在开发上进行测试,输出结果如下: 
 
    
 
 
RNG 模块测试 初步测试完成。 
 
 
 
 |   
 
  
  
  
 
 
 | 
| 
 | 
| 
 | 
| 
 | 
 |