示例代码
RNG
采用用户提供的种子和开关振荡器提供的种子生成随机数,工程路径:SDK_Folder\projects\peripheral\rng\app_rng。
示例工程流程图
示例工程采用了两种种子,且通过中断和轮询两种方式生成随机数。下面只以轮询方式进行说明,中断方式查看示例工程。
使用用户提供的种子生成随机数
app_rng_params_t rng_polling_params = {
.use_type = APP_RNG_TYPE_POLLING,
.init = {
.seed_mode = RNG_SEED_USER,
.lfsr_mode = RNG_LFSR_MODE_59BIT,
.out_mode = RNG_OUTPUT_LFSR,
.post_mode = RNG_POST_PRO_NOT,
},
};
- use_type:传输方式选择APP_RNG_TYPE_POLLING(轮询)
- init.seed_mode:种子源选择RNG_SEED_USER(用户提供)
- init.lfsr_mode:LFSR模式选择RNG_LFSR_MODE_59BIT
- init.out_mode:输出模式选择RNG_OUTPUT_LFSR(LFSR直接输出)
- init.post_mode:后处理选择RNG_POST_PRO_NOT(不进行后处理)
使用开关振荡器提供的种子生成随机数
rng_polling_params.init.seed_mode = RNG_SEED_FR0_S0;
rng_polling_params.init.out_mode = RNG_OUTPUT_FR0_S0;
- init.seed_mode:种子源选择RNG_SEED_FR0_S0(开关振荡器S0提供的种子)
- init.out_mode:输出模式选择RNG_OUTPUT_FR0_S0(开关振荡器直接输出)
重要函数
- 初始化RNG
app_rng_init (&rng_polling_params, NULL)
- 同步生成随机数
app_rng_gen_sync(g_random_seed, &random_number)
- g_random_seed:随机种子(使用开关振荡器产生的种子,此参数可传入NULL)。
- random_number:生成的随机数。
- 异步生成随机数
app_rng_gen_async(g_random_seed)
g_random_seed:随机种子(使用开关振荡器产生的种子,此参数可传入NULL)。
测试验证
连接开发板到PC端,打开串口,串口将打印生成的随机数。