STM32的ADC產(chǎn)生隨機數
函數如下:

首先初始化ADC1,然后讀取通道4即PA4引腳上的電壓值,轉換成16位的數字值后取低4位,再賦給8位變量led_mode_value。
將這個(gè)led_mode_value變量通過(guò)串口送至電腦觀(guān)察,效果如下:

看來(lái)隨機效果還算可以,23次取值,取到了8個(gè)不同值,這樣的隨機程度可以接受。
隨機數產(chǎn)生過(guò)程改進(jìn)版:
函數如下:

初始化ADC1之后,先取一個(gè)低4位的值,然后再取一個(gè)16位隨機值加到第一個(gè)隨機4位值上,得到一個(gè)和,然后再取出這個(gè)和的低4位作為最終的范圍在[0,15]中的隨機數。
通過(guò)串口送到電腦,效果如下:

23次的取值統計,統計到了14個(gè)隨機 值,隨機效果提升。
當然,利用ADC產(chǎn)生隨機數是一個(gè)可行的方法,但由于是利用ADC引腳懸空的噪聲電壓,經(jīng)AD轉換來(lái)獲取的,所以隨機效果取決于當時(shí)處理器周?chē)碾姶怒h(huán)境,電磁干擾越多,隨機效果就越好,貌似這樣有悖于降低EMI環(huán)境的理論,但有些事物總要作出取舍,世界的天平總是在晃動(dòng)中保持平衡,沒(méi)有極好,也沒(méi)有極壞,適合的就是最好的。
PS:
STM32的ADC引腳對應的IO

評論