龙空技术网

学习STM32编程——随机数发生器(RNG)实验

华26104121 110

前言:

眼前朋友们对“c语言生成随机数0或1”大致比较关心,各位老铁们都想要知道一些“c语言生成随机数0或1”的相关内容。那么小编在网摘上搜集了一些关于“c语言生成随机数0或1””的相关内容,希望看官们能喜欢,兄弟们快快来了解一下吧!

关键代码:

rng.c

//初始化RNGu8 RNG_Init(void){	u16 retry=0; 	    RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG, ENABLE);//开启RNG时钟,来自PLL48CLK		RNG_Cmd(ENABLE);	//使能RNG		while(RNG_GetFlagStatus(RNG_FLAG_DRDY)==RESET&&retry<10000)	//等待随机数就绪	{		retry++;		delay_us(100);	}	if(retry>=10000)return 1;//随机数产生器工作不正常	return 0;}//得到随机数//返回值:获取到的随机数u32 RNG_Get_RandomNum(void){	 	while(RNG_GetFlagStatus(RNG_FLAG_DRDY)==RESET);	//等待随机数就绪  	return RNG_GetRandomNumber();	}//生成[min,max]范围的随机数int RNG_Get_RandomRange(int min,int max){    return RNG_Get_RandomNum()%(max-min+1) +min;}

main.c

int main(void){ 	u32 random;	u8 t=0,key;	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2	delay_init(168);  //初始化延时函数	uart_init(115200);		//初始化串口波特率为115200	LED_Init();					//初始化LED	KEY_Init();					//按键初始化 	LCD_Init();         //初始化液晶接口	POINT_COLOR=RED;	while(RNG_Init())	 		//初始化随机数发生器	{		LCD_ShowString(30,130,200,16,16,"  RNG Error! ");	 		delay_ms(200);		LCD_ShowString(30,130,200,16,16,"RNG Trying...");	 	}                                 	LCD_ShowString(30,130,200,16,16,"RNG Ready!   ");	 	LCD_ShowString(30,150,200,16,16,"KEY0:Get Random Num");	 	LCD_ShowString(30,180,200,16,16,"Random Num:");	 	LCD_ShowString(30,210,200,16,16,"Random Num[0-9]:");	 	  	POINT_COLOR=BLUE;	while(1) 	{				delay_ms(10);		key=KEY_Scan(0);		if(key==KEY0_PRES)		{			random=RNG_Get_RandomNum(); //获得随机数			LCD_ShowNum(30+8*11,180,random,10,16); //显示随机数		} 		if((t%20)==0)		{ 			LED0=!LED0;	//每200ms,翻转一次LED0 			random=RNG_Get_RandomRange(0,9);//获取[0,9]区间的随机数			LCD_ShowNum(30+8*16,210,random,1,16); //显示随机数		 }		delay_ms(10);		t++;	}	}

标签: #c语言生成随机数0或1