使用硬件随机数,为什么会卡在中间???

2019-07-21 02:20发布

调了很久,最后用串口打印来检测执行到哪里。。。


int i=0;
RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG,ENABLE);
printf("1");
RNG_Cmd(ENABLE);
printf("2");
while(RNG_GetFlagStatus(RNG_FLAG_DRDY) == RESET&&(i<10000))
{
i++;
}  
if(i>=10000)
return 0;
return 1;


串口只打印出“1”,没有打印出“2”。。。。求助,这是为什么
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-21 07:48
是在我们开发板测试的么?
我们例程是这样的: [mw_shl_code=c,true]//初始化RNG u8 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; }[/mw_shl_code] 测试无问题。
你的printf,是否正常?
另外有没有仿真器,跟踪下代码吧。
small_stu
2楼-- · 2019-07-21 12:10
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-21 15:59
回复【3楼】small_stu:
---------------------------------
我们例程,测试没这个问题。
你是不是用我们开发板+我们例程呢?

一周热门 更多>