[ion] Ion::random()

Change-Id: Ib85055ab3b4bf3dfce991f9990659c744be20f39
This commit is contained in:
Romain Goyet
2017-02-16 11:36:29 +01:00
parent bd220b2cd7
commit 809fd8a17a
4 changed files with 26 additions and 0 deletions

View File

@@ -41,6 +41,22 @@ uint32_t Ion::crc32(const uint32_t * data, size_t length) {
return result;
}
uint32_t Ion::random() {
bool initialRNGEngineState = RCC.AHB2ENR()->getRNGEN();
RCC.AHB2ENR()->setRNGEN(true);
RNG.CR()->setRNGEN(true);
while (RNG.SR()->getDRDY() == 0) {
}
uint32_t result = RNG.DR()->get();
RNG.CR()->setRNGEN(false);
RCC.AHB2ENR()->setRNGEN(initialRNGEngineState);
return result;
}
void Ion::reset() {
CM4.AIRCR()->requestReset();
}