您的位置 首页 培训

STM32的ADC发生随机数

因为在做一样东西需要产生随机数,范围在[0,15],在网上找到一种方法,就是利用ADC悬空引脚产生随机数,所以做了尝试,把尝试的结果分享一

由于在做相同东西需求发生随机数,范围在[0,15],在网上找到一种办法,便是使用ADC悬空引脚发生随机数,所以做了测验,把测验的成果共享一下,总的来说,随机作用还算能够。

函数如下:
首要初始化ADC1,然后读取通道4即PA4引脚上的电压值,转换成16位的数字值后取低4位,再赋给8位变量led_mode_value。
将这个led_mode_value变量经过串口送至电脑调查,作用如下:

看来随机作用还算能够,23次取值,取到了8个不同值,这样的随机程度能够承受。
随机数发生进程改进版:
函数如下:
初始化ADC1之后,先取一个低4位的值,然后再取一个16位随机值加到第一个随机4位值上,得到一个和,然后再取出这个和的低4位作为终究的范围在[0,15]中的随机数。
经过串口送到电脑,作用如下:
23次的取值计算,计算到了14个随机值,随机作用提高。
当然,使用ADC发生随机数是一个可行的办法,但由于是使用ADC引脚悬空的噪声电压,经AD转换来获取的,所以随机作用取决于其时处理器周围的电磁环境,电磁搅扰越多,随机作用就越好,形似这样有悖于下降EMI环境的理论,但有些事物总要作出取舍,国际的天平总是在晃动中坚持平衡,没有极好,也没有极坏,合适的便是最好的。
PS:
STM32的ADC引脚对应的IO

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/256297.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部