硬件随机数发生器错误 Arm M4
Hardware Random Number Generator error Arm M4
我是 Arm 微控制器编程的新手。我阅读了数据表并发现了这个:
- Reset/initialize.
- 将 1 写入
CR[INTM]
、CR[HA]
和 CR[GO]
- 轮询
SR[OREG_LVL]
直到不为0。
- 当
SR[OREG_LVL]
不为0时,从中读取可用的随机数据
OR[RANDOUT]
- 根据需要重复步骤 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 一个新的随机数(不一定不同)每次被调用。
我是 Arm 微控制器编程的新手。我阅读了数据表并发现了这个:
- Reset/initialize.
- 将 1 写入
CR[INTM]
、CR[HA]
和CR[GO]
- 轮询
SR[OREG_LVL]
直到不为0。 - 当
SR[OREG_LVL]
不为0时,从中读取可用的随机数据OR[RANDOUT]
- 根据需要重复步骤 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 一个新的随机数(不一定不同)每次被调用。