新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32的ADC產(chǎn)生隨機數(shù)

STM32的ADC產(chǎn)生隨機數(shù)

作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏
因為在做一樣東西需要產(chǎn)生隨機數(shù),范圍在[0,15],在網(wǎng)上找到一種方法,就是利用ADC懸空引腳產(chǎn)生隨機數(shù),所以做了嘗試,把嘗試的結(jié)果分享一下,總的來說,隨機效果還算可以。
函數(shù)如下:
首先初始化ADC1,然后讀取通道4即PA4引腳上的電壓值,轉(zhuǎn)換成16位的數(shù)字值后取低4位,再賦給8位變量led_mode_value。
將這個led_mode_value變量通過串口送至電腦觀察,效果如下:

看來隨機效果還算可以,23次取值,取到了8個不同值,這樣的隨機程度可以接受。
隨機數(shù)產(chǎn)生過程改進版:
函數(shù)如下:
初始化ADC1之后,先取一個低4位的值,然后再取一個16位隨機值加到第一個隨機4位值上,得到一個和,然后再取出這個和的低4位作為最終的范圍在[0,15]中的隨機數(shù)。
通過串口送到電腦,效果如下:
23次的取值統(tǒng)計,統(tǒng)計到了14個隨機值,隨機效果提升。
當然,利用ADC產(chǎn)生隨機數(shù)是一個可行的方法,但由于是利用ADC引腳懸空的噪聲電壓,經(jīng)AD轉(zhuǎn)換來獲取的,所以隨機效果取決于當時處理器周圍的電磁環(huán)境,電磁干擾越多,隨機效果就越好,貌似這樣有悖于降低EMI環(huán)境的理論,但有些事物總要作出取舍,世界的天平總是在晃動中保持平衡,沒有極好,也沒有極壞,適合的就是最好的。
PS:
STM32的ADC引腳對應的IO


關鍵詞: STM32ADC隨機

評論


技術專區(qū)

關閉