一知半解学CubeMX——RNG:随机数发生器

时间:2024-03-20 12:23:22
一知半解学习环境:
    1、CubeMX 4.23.0
    2、uVision 5.14.2
    3、MCU 启明 STM32F407 开发板(高配版) V3.1

一知半解学习目标:
    1、掌握CubeMX下RCC以及SYS的相关配置;
    2、掌握CubeMX下串口打印的相关配置;
    3、掌握CubeMX下RNG(随机数发生器)的启用

一知半解实现过程:
    1、配置系统调试接口及时基时钟源;
一知半解学CubeMX——RNG:随机数发生器
    2、配置外部高速时钟源;
一知半解学CubeMX——RNG:随机数发生器
    3、根据原理图配置对应串口(USART1);   
一知半解学CubeMX——RNG:随机数发生器
一知半解学CubeMX——RNG:随机数发生器
     4、配置时钟树;
一知半解学CubeMX——RNG:随机数发生器
    5、配置串口参数,保持默认参数即可;
一知半解学CubeMX——RNG:随机数发生器
    6、使能RNG功能模块;
一知半解学CubeMX——RNG:随机数发生器
    7、生成工程,并添加程序;
首先,打开工程,在usart.c文件的最后添加如下程序;
一知半解学CubeMX——RNG:随机数发生器

/* USER CODE BEGIN 1 */
#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* 使用的串口可根据实际配置修改 */
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
  return ch;
}
/* USER CODE END 1 */

其次,在main.c循环中添加打印信息;
一知半解学CubeMX——RNG:随机数发生器
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */
  /* USER CODE BEGIN 3 */
        HAL_Delay(1000);
        HAL_RNG_GenerateRandomNumber(&hrng,&random_num);
        printf("随机数发生器产生的随机数为: %x\n",random_num);
  }
  /* USER CODE END 3 */
     8、串口调试助手打印验证;
一知半解学CubeMX——RNG:随机数发生器
一知半解套路回顾:
    1、掌握CubeMX配置的常规套路,如SYS、RCC以及时钟树的配置等;
    2、巩固CubeMX串口打印的配置方法;
    3、学会使用RNG(随机数发生器)的功能;