초보의 아웅다웅 설계하기/STM32

STM32F103 Unique ID Read

로망와니 2021. 6. 27. 11:35

#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));