update serial number string with chip unique ID

This commit is contained in:
XIVN1987
2024-12-14 11:36:43 +08:00
parent 6c2759ff5d
commit 5608a39391
4 changed files with 61 additions and 3 deletions
+29
View File
@@ -59,6 +59,7 @@ void SysTick_Handler(void)
}
void int_to_unicode(uint32_t value , uint8_t *pbuf , uint8_t len);
void USB_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
@@ -67,6 +68,15 @@ void USB_Config(void)
RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_Div3);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE);
/* update serial number string with chip unique ID */
extern uint8_t USBD_StringSerial [];
uint32_t serial0 = *(uint32_t*)0x1FFFF7E8;
uint32_t serial1 = *(uint32_t*)0x1FFFF7EC;
uint32_t serial2 = *(uint32_t*)0x1FFFF7F0;
int_to_unicode(serial0 + serial2, &USBD_StringSerial[2], 8);
int_to_unicode(serial1 + serial2, &USBD_StringSerial[18], 4);
USB_Init();
NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
@@ -143,3 +153,22 @@ void Delay_Ms(uint32_t n)
for(int i = 0; i < SystemCoreClock / 4000 * n; i++) __NOP();
}
void int_to_unicode(uint32_t value , uint8_t *pbuf , uint8_t len)
{
for(int i = 0 ; i < len ; i++)
{
if((value >> 28) < 0xA)
{
pbuf[2 * i] = (value >> 28) + '0';
}
else
{
pbuf[2 * i] = (value >> 28) + 'A' - 10;
}
pbuf[2 * i + 1] = 0;
value = value << 4;
}
}