[其他ST产品]

STM32产生随机数

[复制链接]
127|18
手机看帖
扫描二维码
随时随地手机跟帖
结合国际经验|  楼主 | 2023-3-29 18:43 | 显示全部楼层 |阅读模式
STM32有2种方式产生随机数:硬件方式和软件方式
软件方式

其中软件方式可以通过C语言标准函数stdlib.h的srand()和rand()来获取随机数,使用步骤为:

    使用 srand(seed)来设置随机数种子。我们知道种子不改变的时候,产生多个随机数的时候,第一次产生的数字是随机的,后面产生的都与第一次相同。在单片机中,种子通常可以设置为定时器的一个计数值,也可以通过采集某个GPIO引脚悬空时的值作为随机数的种子
    通过 rand() 函数获取一个随机数

使用特权

评论回复
评论
结合国际经验 2023-3-29 18:44 回复TA
———————————————— 版权声明:本文为CSDN博主「[小G]」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/m0_46079750/article/details/125053181 
结合国际经验|  楼主 | 2023-3-29 18:44 | 显示全部楼层
硬件方式

STM32F4 自带了硬件随机数发生器(RNG),RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 【32 位】的随机数
(即随机数的范围是0~2^32-1)

使用特权

评论回复
结合国际经验|  楼主 | 2023-3-29 18:44 | 显示全部楼层
随机数获取的方式:
#include "rng.h"
#include "delay.h"
#include "sys.h"

//返回0 初始化成功,返回1初始化失败
u8 RNG_Init(void)   
{
    u16 i;
        delay_init(168);
    //使能RNG时钟
    RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG,ENABLE);  //使能RNG时钟,在AHB2总线上
    //使能RNG
    RNG_Cmd(ENABLE);//使能RNG
    while(RNG_GetFlagStatus(RNG_FLAG_DRDY)==0){  //等待DRDY稳定,稳定之后不为0,返回1     
        i++;
        delay_us(100);               
        if(i >= 10000){
            return 1;       //超时强制返回
        }         
    }
    return 0;     
}


//读取数值函数
u32 RNG_Get_RandomNum(void)
{
    while(RNG_GetFlagStatus(RNG_FLAG_DRDY)==0);   //等待稳定
    return RNG_GetRandomNumber();    //获取并返回数值
}

//获取指定范围[min, max]的随机数
int RNG_Get_RandnomRange(int min, int max)     
{
    return min +  RNG_Get_RandomNum()%(max-min+1);   //使数据位于某个范围
}

使用特权

评论回复
结合国际经验|  楼主 | 2023-3-29 18:44 | 显示全部楼层
在主函数中获取一个随机数:

使用特权

评论回复
结合国际经验|  楼主 | 2023-3-29 18:44 | 显示全部楼层
int x = RNG_Get_RandnomRange(100, 300) // 获取100~300的随机数

使用特权

评论回复
Clyde011| | 2024-2-5 07:16 | 显示全部楼层

在其他的交流电流环路都布置好后再放置

使用特权

评论回复
公羊子丹| | 2024-2-5 08:09 | 显示全部楼层

I2C1的时钟可以自行选择HSI或者SYSCLK

使用特权

评论回复
万图| | 2024-2-5 09:12 | 显示全部楼层
98240659ca96547d61.png

使用特权

评论回复
Uriah| | 2024-2-5 10:15 | 显示全部楼层

工作时的电压降低了

使用特权

评论回复
帛灿灿| | 2024-2-5 12:11 | 显示全部楼层

发射出过量的电磁干扰(EMI)

使用特权

评论回复
周半梅| | 2024-2-5 15:10 | 显示全部楼层

一部分是I2C1的工作模块,另外一部分是其控制模块

使用特权

评论回复
Pulitzer| | 2024-2-5 16:13 | 显示全部楼层

负载环能以直流方式汲取能量

使用特权

评论回复
童雨竹| | 2024-2-5 18:09 | 显示全部楼层

STM32CUBEMX配置生成初始化代码

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

562

帖子

1

粉丝