``` # U083Necule TRNG7 J1 |% W; B$ w' U5 P9 h' [ ## 通过CubeMX创建工程 3 c; @' q0 Q- j, v0 X ![alt text](image-1.png) ![alt text](image-2.png)/ b, z# ]- v( V ![alt text](image-3.png)5 t7 |9 N G0 R% I3 Z" P: v- K ![alt text](image-4.png) ![alt text](image-5.png): E% i$ B- f! }. [ {3 p8 Z ![alt text](image-6.png), T0 w: g" R3 {: I6 M1 P( ]1 k ## 生成代码,直接编译下载运行 ![alt text](image-8.png), ]8 W9 a- a3 N% ~$ ?+ X& g Y8 v ' T9 ], Q! o0 X ## 看不懂,直接OK吧。 ![alt text](image-7.png) 5 F1 l; f: `% o$ X! l: W7 k ## 运行OK,串口调试会收到Welcome to STM32 world ! 这是Demo里自带的 3 a3 e2 c/ Z4 A" b% a5 _ ![alt text](image-9.png) 3 @3 r, U) K4 |6 `) [# A ## 只要调用这个函数, m y4 z/ Y4 K% ?. ` ![alt text](image-10.png)6 ~4 H3 I8 W$ h3 z+ [! f! d' B ## 在原按键程序里,添加两行代码,即可实现. Q* T, z$ y5 T3 t7 s) W8 J! u/ I 9 X, ]' z+ W, A if (BspButtonState == BUTTON_PRESSED) { /* Update button state */9 H$ y1 k/ J7 N0 W8 i2 O BspButtonState = BUTTON_RELEASED;' w6 t& _" {; O: x0 D$ }' w0 H /* -- Sample board code to toggle leds ---- */ BSP_LED_Toggle(LED_GREEN); /* ..... Perform your action ..... */3 n. ]2 l* {. e" B: m* { - _* {/ ^! S' I& n5 P1 t# ? HAL_RNG_GenerateRandomNumber(&hrng, &Trng);3 F5 s {5 J4 a printf("The random number is: %d !\n\r", Trng); } . o: {8 U( ?/ B' n ![alt text](image-11.png) ## 至此,一个简单的随机数生成并打印功能实现。5 r! S% U, r' { 6 M5 k R; z5 k. W8 I) L8 q. E ## 接下来修改为中断方式,回到cubeMX,使能中断 ![alt text](image-12.png)# c0 p P$ n2 P" U( H % A1 r* X9 X) s7 d z( X# A- A ## 修改程序7 }1 q. X1 e8 T# e# Y 2 i4 h3 x$ L$ Q2 X( j if (BspButtonState == BUTTON_PRESSED)8 g: G6 y: J6 H5 A+ b4 w% z$ a: z { /* Update button state */* G+ n; s: Z# S3 ]1 y/ ?5 }" |( m& t BspButtonState = BUTTON_RELEASED; /* -- Sample board code to toggle leds ---- */ BSP_LED_Toggle(LED_GREEN); /* ..... Perform your action ..... */# ]+ A+ s! V U+ N HAL_RNG_GenerateRandomNumber_IT(&hrng);3 N7 I/ d- v, A% l$ k ( Z4 _: X3 d" n4 V% e }' M' t! z2 ]* M6 P ## 添加回调函数* O* c* B# P# `- M % j3 y: N* A2 A8 `8 I void HAL_RNG_ReadyDataCallback(RNG_HandleTypeDef *hrng, uint32_t random32bit)3 a6 Z1 T5 t" V6 z# X) C5 n {) J$ |5 V5 ^$ f" h6 _. x- G- X printf("The random number is: %d !\n\r", random32bit);9 ]1 a) c6 c. Y# C8 y& d7 F2 c }- F/ ~. J: j# S5 k ## 编译运行) j$ [; b8 x+ O4 |& g ![alt text](image-13.png)/ V" ~- n& Q! P5 A ## 中断方式也实现。0 k0 [8 N3 o/ p2 Y& L' [/ [ ```( I3 U) I- _& G/ D/ Z8 U |
STM32CubeIDE 快速入门指南
有奖直播 | 解析STM32U0 新一代超低功耗入门级MCU
行业应用篇 | STM32U0为水气表提供降本增效新思路
【NUCLEO-WB09KE评测】BLE创建服务和写特征控制LED
基于STM32CubeIDE+MPU6050做的动量轮平衡自行车(一)
【NUCLEO-WB09KE评测】使用I2C点亮一个OLED
【NUCLEO-WB09KE评测】USART的printf和GPIO的使用
STM32CubeIDE 1.3.0 汉化方法
【STM32H7S78-DK评测】XIP模板问题处理与电机控制
打卡学习 | 《STM32U0线上课程》上线!