Вс дек 18, 2022 13:42:04
RCC->CR |= RCC_CR_HSEON;
0x4840 LDR.N R0, [PC, #0x100] ; 0x4002'1000
0x6802 LDR R2, [R0]
0xf442 0x3280 ORR.W R2, R2, #65536 ; 0x1'0000
0x6002 STR R2, [R0]
data:
DC32 0x40021000
RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16) | RCC_CR_HSION | RCC_CR_HSEON;
0x483f LDR.N R0, [PC, #0xfc] ; 0x4002'1000
0x4a3f LDR.N R2, [PC, #0xfc] ; 0x1'0081 (65665)
0x6002 STR R2, [R0]
data:
DC32 0x40021000
DC32 0x10081
*((volatile uint8_t *)&RCC->CR+2) = RCC_CR_HSEON>>16;
0x2201 MOVS R2, #1
0x483e LDR.N R0, [PC, #0xf8] ; 0x4002'1000
0x7082 STRB R2, [R0, #0x2]
data:
DC32 0x40021000
Вс дек 18, 2022 14:35:36
Вс дек 18, 2022 15:55:59
Пн дек 19, 2022 09:15:20
Пн дек 19, 2022 11:08:18
Пн дек 19, 2022 12:01:49
template<uint32_t mask>
static inline void WriteReg32(pVU32 reg, uint32_t value)
{
if constexpr (mask==0) return;
if constexpr (mask == 0xFFFF'FFFF)
*reg = value;
else if constexpr (mask == 0x0000'FFFF)
*pVU16(reg) = value;
else if constexpr (mask == 0xFFFF'0000)
*(pVU16(reg) + 1) = value >> 16;
else if constexpr (mask == 0x0000'00FF)
*pVU8(reg) = value;
else if constexpr (mask == 0x0000'FF00)
*(pVU8(reg) + 1) = value >> 8;
else if constexpr (mask == 0x00FF'0000)
*(pVU8(reg) + 2) = value >> 16;
else if constexpr (mask == 0xFF00'0000)
*(pVU8(reg) + 3) = value >> 24;
else if constexpr ((mask & 0xFFFF'FF00)==0)
*pVU8(reg) = (*pVU8(reg) & ~mask) | value;
else if constexpr (!(mask & 0xFFFF'00FF))
*(pVU8(reg) + 1) = (*(pVU8(reg) + 1) & ~(mask >> 8)) | (value >> 8);
else if constexpr (!(mask & 0xFF00'FFFF))
*(pVU8(reg) + 2) = (*(pVU8(reg) + 2) & ~(mask >> 16)) | (value >> 16);
else if constexpr (!(mask & 0x00FF'FFFF))
*(pVU8(reg) + 3) = (*(pVU8(reg) + 3) & ~(mask >> 24)) | (value >> 24);
else if constexpr (!(mask & 0xFFFF'0000))
*pVU16(reg) = (*pVU16(reg) & ~mask) | value;
else if constexpr (!(mask & 0x0000'FFFF))
*(pVU16(reg) + 1) = (*(pVU16(reg) + 1) & ~(mask >> 16)) | (value >> 16);
else
*reg = (*reg & ~mask) | value;
}
Пн дек 19, 2022 23:34:35
Вт дек 20, 2022 09:25:48
// (1) Включить HSE
WriteReg32<0x00FF'0000>(&RCC->CR, RCC_CR_HSEON);
// (2) Включить FPU
WriteReg32<0x00FF'0000>(&SCB->CPACR, 0x00F0'0000);
// (3) Ждать включения HSE
while(!(RCC->CR & RCC_CR_HSERDY));
Вт дек 20, 2022 17:42:30
Ср дек 21, 2022 08:24:25
Ср дек 21, 2022 09:33:25
Ср дек 21, 2022 21:44:55
Ср дек 21, 2022 22:21:29