完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 sunhongdd26 于 2015-7-14 09:58 编辑 因为在做一样东西需要产生随机数,范围在[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
|
|
相关推荐 |
|
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12010 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 18:06 , Processed in 0.557022 second(s), Total 50, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号