![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
``` # U083Necule TRNG ## 通过CubeMX创建工程 " M, C1 r6 B ^4 p3 R9 V ![]() ![alt text](image-1.png) ![]() ![alt text](image-2.png)8 \0 h# M* y+ v9 V ![]() ![alt text](image-3.png)+ t$ p3 ^5 c0 B6 l1 P6 t ![]() ![alt text](image-4.png) ![]() ![alt text](image-5.png) ![]() ![alt text](image-6.png)# J$ P& q/ j( X( O; X G' V& p ![]() ' L% n" c8 t% X: }' Z ## 生成代码,直接编译下载运行: \) l2 \! x% w0 o1 | ![alt text](image-8.png) ![]() / r( q" y+ H9 n( N ## 看不懂,直接OK吧。 ![alt text](image-7.png) ![]() ## 运行OK,串口调试会收到Welcome to STM32 world ! 这是Demo里自带的) p1 |/ X$ s' z: J% h + @' M5 \' ]/ e ![alt text](image-9.png) ![]() ## 只要调用这个函数 ![alt text](image-10.png)1 \; Q; d# B6 ? U$ H ![]() 8 ~, m7 g3 j5 y ## 在原按键程序里,添加两行代码,即可实现 if (BspButtonState == BUTTON_PRESSED)# o: {8 @# Y0 C6 l% a T { /* Update button state */8 p( Z5 x- I) i2 a! W BspButtonState = BUTTON_RELEASED;" x1 }0 T0 n6 _0 K /* -- Sample board code to toggle leds ---- *// N4 P. u7 s" z! ]9 J BSP_LED_Toggle(LED_GREEN); /* ..... Perform your action ..... */ HAL_RNG_GenerateRandomNumber(&hrng, &Trng); printf("The random number is: %d !\n\r", Trng); }% Z$ N! `4 D0 ` ![alt text](image-11.png)) m4 f9 E7 q, p9 k3 d# j ![]() ) T& h) I9 @# j# z ## 至此,一个简单的随机数生成并打印功能实现。 5 D X' X7 D$ I7 ^) K ## 接下来修改为中断方式,回到cubeMX,使能中断( M0 {$ p- i! B& J0 C) X! X& ^ ![alt text](image-12.png)- B j- k2 _4 K ![]() ## 修改程序& N6 O, i |9 u. H! z if (BspButtonState == BUTTON_PRESSED) {/ l( k1 K) d+ D5 ~8 P# a /* Update button state */ R" ~5 z$ ?* Y0 d8 y/ [& M BspButtonState = BUTTON_RELEASED; /* -- Sample board code to toggle leds ---- */0 p- S# H4 Q* b1 e6 ^0 |8 x5 U BSP_LED_Toggle(LED_GREEN);8 `, B: g6 \& s- [7 C ?. t /* ..... Perform your action ..... */ # o) w4 p c: X% d9 n HAL_RNG_GenerateRandomNumber_IT(&hrng); 4 S o, |* L. h3 R @1 ?3 l& p 1 z. I5 J/ N0 A+ Z) d0 q0 }, ~ } ## 添加回调函数, L; u! K* X" P0 N9 b! N void HAL_RNG_ReadyDataCallback(RNG_HandleTypeDef *hrng, uint32_t random32bit) { printf("The random number is: %d !\n\r", random32bit); }: K6 b7 E8 e1 _8 e/ L# b* n9 n& U ## 编译运行 ![alt text](image-13.png) ![]() ## 中断方式也实现。 ```1 Z" r0 `0 A% l9 t: K9 V 1 |8 @0 O& V* a% [5 |3 C( z |
【NUCLEO-U083RC评测】驱动OLED模组显示
【NUCLEO-U083RC评测】ULP uart 定时器测评
【NUCLEO-U083RC评测】MSI功耗测评
【NUCLEO-U083RC评测】+ AES加解密模块性能测试
【NUCLEO-U083RC评测】+ RNG硬件随机数模块生成彩票号码
【NUCLEO-U083RC评测】+真随机数测试
【NUCLEO-U083RC评测】+串口shell移植
【NUCLEO-U083RC评测】低功耗定时器及休眠唤醒
【NUCLEO-U083RC评测】AES加密解密
【NUCLEO-U083RC评测】④RNG随机数发生器