我是Arm微控制器编程的新手。我阅读了数据表,发现了这个:
CR[INTM]
,CR[HA]
和CR[GO]
SR[OREG_LVL]
,直到它不为0. SR[OREG_LVL]
不为0时,请从中读取可用的随机数据
OR[RANDOUT]
这些是生成随机数的步骤。有人可以给我一个代码示例吗?我正在使用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) { }
}
答案 0 :(得分: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
每次调用都应该返回一个新的随机数(不一定不同)。