27 for (
volatile long i=0; i<8852*ms; i++) {
28 __asm
volatile(
"nop");
32 for (
volatile long i=0; i<9*us; i++) {
33 __asm
volatile(
"nop");
38 bool initialCRCEngineState =
RCC.
AHB1ENR()->getCRCEN();
40 CRC.
CR()->setRESET(
true);
48 RCC.
AHB1ENR()->setCRCEN(initialCRCEngineState);
53 bool initialRNGEngineState =
RCC.
AHB2ENR()->getRNGEN();
56 RNG.
CR()->setRNGEN(
true);
58 while (
RNG.
SR()->getDRDY() == 0) {
62 RNG.
CR()->setRNGEN(
false);
63 RCC.
AHB2ENR()->setRNGEN(initialRNGEngineState);
70 static inline char hex(
uint8_t d) {
79 for (
int i=0; i<SerialNumberLength/2; i++) {
81 buffer[2*i] = hex(d >> 4);
82 buffer[2*i+1] = hex(d & 0xF);
84 buffer[SerialNumberLength] = 0;
114 "msr MSP, %[stackPointer] ; bx %[resetHandler]" 116 [stackPointer]
"r" (*stackPointerAddress),
117 [resetHandler]
"r" (*resetHandlerAddress)
135 for (
int g=2; g<5; g++) {
140 #if EPSILON_DEVICE_BENCH 146 #if EPSILON_DEVICE_BENCH 147 if (consolePeerConnectedOnBoot) {
211 RCC.
CR()->setHSEON(
true);
212 while(!
RCC.
CR()->getHSERDY()) {
229 RCC.
CR()->setPLLON(
true);
230 while(!
RCC.
CR()->getPLLRDY()) {
239 RCC.
CR()->setHSION(
false);
247 ahb1enr.setGPIOAEN(
true);
248 ahb1enr.setGPIOBEN(
true);
249 ahb1enr.setGPIOCEN(
true);
250 ahb1enr.setGPIODEN(
true);
251 ahb1enr.setGPIOEEN(
true);
252 ahb1enr.setDMA2EN(
true);
268 apb2enr.setADC1EN(
true);
269 apb2enr.setSYSCFGEN(
true);
271 apb2enr.setSDIOEN(
true);
void setPLLSRC(PLLSRC s) volatile
void set(Register< T > value) volatile
void shutdownPeripherals()
void getSerialNumber(char *buffer)
void requestReset() volatile
void setAccess(int index, Access a) volatile
uint32_t crc32(const uint32_t *data, size_t length)
void setPPRE1(AHBRatio r) volatile
void setSW(SW s) volatile
void setVTOR(void *address) volatile