你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1994|回复: 2

[STM32L476] 【NUCLEO-L476RG开发】硬件随机数

[复制链接]

1

主题

233

回帖

0

蝴蝶豆

中级会员

最后登录
2019-1-4
发表于 2015-11-18 10:56:56 | 显示全部楼层 |阅读模式
        这次的NUCLEO-L476RG学习笔记,为大家带来的是硬件随机数。
        STM32F4系列单片机自带了硬件随机数发生器( RNG ), RNG 处理器是一个以连续模拟噪声为基础的 随机数发生器,在主读时提供一个 32 位的随机数。 STM32F4 的随机数发生器构图如图1:

        STM32F4的随机数发生器采用模拟电路实现。此电路产生馈入线性反馈移位寄存器 (RNG_LFSR)的种子,用于生成 32 位随机数。
        该模拟电路由几个环形振荡器组成,的输出进行异或运算以产生种子。 RNG_LF  由专用时钟 (PLL48CLK) 按恒定频率提供时钟信息,因此随机数质量与 HCLK 频率无关。当将大量种子引入 RNG_LFSR 后, RNG_LFSR 的内容会传入数据寄存器 (RNG_DR) 。同时,系统会监视模拟种子和专用时钟 PLL48CLK,当种子上出现异常序列,或 PLL48CLK 时钟频率过低,可以由 RNG_SR 寄存器的对应位读取到,如果设置了中断则在检测到错误时,还可以产生中断。
        随机数发生器操作步骤如下:

        1.使能随机数发生器时钟
            随机数发生器时钟来自PLL48CK,通过AHB2ENR寄存器使能。
        2.势能随机数发生器
          通过RNG_CR寄存器的最低位设置为1,使能随机数发生器。
        3.判断DRDY位,读取随机数值
          每次读取随机数之前,先判断RNG_SR寄存器的DRDY位,如果该位为1.则可以读取RNG_DR得到的随机数。

实现随机数的具体函数(库函数版本):

  1. u8 RNG_Init(void)//函数功能:初始化RNG
  2. {
  3.         u16 retry=0;
  4.         RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG, ENABLE);//开启RNG时钟,来自PLL48CLK
  5.         RNG_Cmd(ENABLE);        //使能RNG
  6.         while(RNG_GetFlagStatus(RNG_FLAG_DRDY)==RESET&&retry<10000)        //等待随机数就绪
  7.         {
  8.                 retry++;
  9.                 delay_us(100);
  10.         }
  11.         if(retry>=10000)return 1;//随机数产生器工作不正常
  12.         return 0;
  13. }

  14. u32 RNG_Get_RandomNum(void)//函数功能:得到随机数。返回值:获取到的随机数
  15. {         
  16.         while(RNG_GetFlagStatus(RNG_FLAG_DRDY)==RESET);        //等待随机数就绪  
  17.         return RNG_GetRandomNumber();        
  18. }

  19. int RNG_Get_RandomRange(int min,int max)//函数功能:生成[min,max]范围的随机数
  20. {
  21.    return RNG_Get_RandomNum()%(max-min+1) +min;
  22. }
复制代码


以上函数可以成功产生随机数,别忘了添加库函数!!
当然,主函数因人而异,有的朋友喜欢串口打印,有的喜欢显示屏输出,在这里我就不贴出来了。
以后有机会还会和大家分享学习成果!!



QQ截图20151118103429.png
回复

使用道具 举报

33

主题

1243

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-3-9
发表于 2015-11-18 11:59:54 | 显示全部楼层
谢谢分享.png
回复 支持 反对

使用道具 举报

13

主题

106

回帖

0

蝴蝶豆

中级会员

最后登录
2018-4-5
发表于 2015-11-18 12:07:21 | 显示全部楼层
多谢分享,学习了
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版