RNG Query
RNG Query示例实现了通过阻塞方式获取RNG随机数。示例工程中采用用户提供的种子以及开关振荡器S0提供的种子两种方式产生随机数。
RNG Query示例的源代码和工程文件位于SDK_Folder\projects\peripheral\rng\rng_query,其中工程文件在文件夹Keil_5下。
代码理解
示例工程流程图如图 25所示:
- 使用用户提供的种子生成随机数的初始化。
uint16_t g_random_seed[8] = {0x1234, 0x5678, 0x90AB, 0xCDEF, 0x1468, 0x2345, 0x5329, 0x2411}; g_rng_handle.init.seed_mode = RNG_SEED_USER; g_rng_handle.init.lfsr_mode = RNG_LFSR_MODE_59BIT; g_rng_handle.init.out_mode = RNG_OUTPUT_LFSR; g_rng_handle.init.post_mode = RNG_POST_PRO_NOT; hal_rng_deinit(&g_rng_handle); hal_rng_init(&g_rng_handle);RNG详细配置参数请参考RNG Interrupt。
- 开关振荡器S0的种子生成随机数的初始化。
g_rng_handle.init.seed_mode = RNG_SEED_FR0_S0; g_rng_handle.init.lfsr_mode = RNG_LFSR_MODE_128BIT; g_rng_handle.init.out_mode = RNG_OUTPUT_FR0_S0; hal_rng_deinit(&g_rng_handle); hal_rng_init(&g_rng_handle);RNG详细配置参数请参考RNG Interrupt。
- 阻塞方式接口生成随机数。
hal_rng_generate_random_number(&g_rng_handle, g_random_seed, &data);
测试验证
- 用GProgrammer下载rng_query.bin至开发板。
- 将开发板串口连接至PC端,打开并配置GRUart。
- 在GRUart的Receive Data窗口中将会显示获取到的随机数。