STM32的ADC產(chǎn)生隨機數(shù)
函數(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引腳對應(yīng)的IO
評論