![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
随机数是我们编程中非常常用的一项技术,在我们的生活中应用场景十分广泛,例如密码学中对密码的加密,在模拟信号中用来模拟随机事件的出现。4 z% s; Y* C! B- [+ w; ~ # Y" }( u" L& A4 i& }) C 例如我们在之前的使用NanoEdge中测试的数据模拟正弦波的时候就出现了数据太过于精确而不像一个模拟信号的样子。+ Z& c& u' S! A- S" ^9 [$ J 因此使用随机数可以在模拟仿真领域中起到非常重要的作用。 ![]() ' ]8 U/ w$ [( F- M( ^; M/ |, J 在STM32参考手册(F4系列)中提到了STM32中具有一个随机数发生器(RNG)读取其可以获得一个32位的随机数。- q4 b& _2 W a ![]() : r& b v: _& h; u0 i/ Z# | 随机数发生器RNG采用模拟电路实现,同样具备着异常检测的功能。接着手册的后续部分讲述了如何操作寄存器中操作实现RNG,但是由于我们使用HAL库编程代码,因此我们直接跳到HAL库的部分。 ![]() - a; y- o5 ?9 O* x1 S# ] M5 g 在CubeMX中我们需要使能RNG功能。) f F! w' `# [ 之后创建我们的工程。 我们可以使用HAL_RNG_GetRandomNumber来获取随机数* j, R0 z& z$ Z1 r+ O
需要注意的是,这里生成的随机数是32位的,因此我们可以利用一些简单的计算来获取我们需要的随机数。
我们对其进行取余,即可获得0~9之间的随机数。 3 V' c" p- y) Z( H5 T+ o( _ ![]() 初次之外,我们可以利用这个随机数来模拟噪声信号。
![]() 我们在原始信号之上添加一个噪声信号,这个噪声信号的产生就由我们的随机数发生器产生。( N4 J7 h% K: }- L ]& H ' ^- A; K% d( u 转载自:电路小白' z8 @4 H1 c& M5 C4 s$ o 如有侵权请联系删除 ( P u# }( \2 I) W1 [ |
基于STM32F407和Cubemx的ADC采集+DMA传输实现简易示波器经验分享
STM32固件库分享,超全系列整理
基于STM32F407的DMA采样+FFT时域经验分享
【中文文档】AN3965_STM32F40x和STM32F41x基于串口的IAP
STM32F4-DISC 实现USB主机(U盘)和USB设备(虚拟串口)自动切换
STM32F4中文用户手册
基于STM32F407的FreeRTOS阶段性的总结(13)
STM32F400、STM32F402 Cortex-M4超值单片机
基于STM32F407的FreeRTOS获取各任务运行时间及占用情况(4)
基于STM32F407的FreeRTOS任务的挂起与恢复(3)