硬件随机数发生器错误 Arm M4

Hardware Random Number Generator error Arm M4

我是 Arm 微控制器编程的新手。我阅读了数据表并发现了这个:

  1. Reset/initialize.
  2. 将 1 写入 CR[INTM]CR[HA]CR[GO]
  3. 轮询SR[OREG_LVL]直到不为0。
  4. SR[OREG_LVL]不为0时,从中读取可用的随机数据 OR[RANDOUT]
  5. 根据需要重复步骤 3 和 4。

这些是生成随机数的步骤。有人可以给我一个代码示例吗?我正在使用 k64 子系列,特别是 MK64FX512VLL12.

这是我尝试过的方法:

void Rng_Test() 
{ 
  RNG->CR |= RNG_CR_SLP_MASK; 
  RNG->CR |= RNG_CR_GO_MASK; 
  RNG->CR |= RNG_CR_HA_MASK; 
  RNG->CR |= RNG_CR_INTM_MASK; 
  while (RNG_SR_OREG_LVL_MASK == 0) { } 
}

使用您已有的代码

void Rng_Init() {
    RNG->CR |= RNG_CR_SLP_MASK; 
    RNG->CR |= RNG_CR_GO_MASK; 
    RNG->CR |= RNG_CR_HA_MASK;
    RNG->CR |= RNG_CR_INTM_MASK; 
}

int Rng_GetRand() {
    while ((RNG->SR & RNG_SR_OREG_LVL_MASK) == 0);
    return RNG->OR;
}

类似上面的东西应该可以工作,Rng_Init() 需要一次,Rng_GetRand 应该 return 一个新的随机数(不一定不同)每次被调用。