STM32F103 Unique ID Read
#define UID_BASE ((uint32_t)0x1FFFF7E8U)
#define Get_Unique8(x) ((x >= 0 && x < 12) ? (*(uint8_t *) (UID_BASE + (x))) : 0)
#define Get_Unique16(x) ((x >= 0 && x < 6) ? (*(uint16_t *) (UID_BASE + 2 * (x))) : 0)
#define Get_Unique32(x) ((x >= 0 && x < 3) ? (*(uint32_t *) (UID_BASE + 4 * (x))) : 0)
/* 32bit 단위 */
printf("Get_Unique32 : %08X", Get_Unique32(0));
printf(":%08X", Get_Unique32(1));
printf(":%08X\r\n", Get_Unique32(2));
/* 16bit 단위 */
printf("Get_Unique16 : %04X", Get_Unique16(0));
printf(":%04X", Get_Unique16(1));
printf(":%04X", Get_Unique16(2));
printf(":%04X", Get_Unique16(3));
printf(":%04X", Get_Unique16(4));
printf(":%04X\r\n", Get_Unique16(5));
/* 8 bit 단위 */
printf("Get_Unique8 : %02X", Get_Unique8(0));
printf(":%02X", Get_Unique8(1));
printf(":%02X", Get_Unique8(2));
printf(":%02X", Get_Unique8(3));
printf(":%02X", Get_Unique8(4));
printf(":%02X", Get_Unique8(5));
printf(":%02X", Get_Unique8(6));
printf(":%02X", Get_Unique8(7));
printf(":%02X", Get_Unique8(8));
printf(":%02X", Get_Unique8(9));
printf(":%02X", Get_Unique8(10));
printf(":%02X\r\n", Get_Unique8(11));