因为需要自动适配芯片进行系统配置,所以我们有必要通过读取一些系统寄存器来获取必要信息。
我们的代码需要兼容STM32F1/GD32F1/STM32F0/STM32F4
代码如下:
- #ifdef STM32F0XX
- void* p = (void*)0x1FFFF7AC;
- #else
- void* p = (void*)0x1FFFF7E8;
- #endif
- memcpy(ID, p, ArrayLength(ID));
- CPUID = SCB->CPUID;
- uint MCUID = DBGMCU->IDCODE; // MCU编码。低字设备版本,高字子版本
- RevID = MCUID >> 16;
- DevID = MCUID & 0x0FFF;
- _Index = 0;
- #ifdef STM32F0XX
- FlashSize = *(__IO ushort *)(0x1FFFF7CC); // 容量
- #else
- FlashSize = *(__IO ushort *)(0x1FFFF7E0); // 容量
- #endif
|