我们项目采用的是STM32L431,板子跑程序是正常的,时钟之类的都没错。现在我想搞个随机数,写了个测试程序:
void test_rng(void)
{
RNG_TypeDef rngType;
uint32_t num;
rngType.CR = RNG_BASE;
rngType.SR = RNG_BASE + 4;
rngType.DR = RNG_BASE + 8;
//printf("CR=%x,SR=%x,DR=%x\r\n", rngType.CR, rngType.SR, rngType.DR);
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_RNG);
LL_RNG_Enable(&rngType);
while (LL_RNG_IsActiveFlag_DRDY(&rngType) == RESET)
{
}
num = LL_RNG_ReadRandData32(&rngType);
printf("***num1***=%d\r\n", num);
}
程序一直停在while (LL_RNG_IsActiveFlag_DRDY(&rngType) == RESET)这个地方。
我看网上说的步骤都是:
1.使能RNG控制器时钟。
2.使能RNG。
3.等待直到随机数发生器产生有效的随机数(中断或查询模式)。
4.得到随机数。
也不需要特别的步骤。但就是调不通。
请各位大大帮忙看一下,那里的问题。谢谢 |