реклама на сайте
подробности

 
 
> индивидуальный номер у STM32, CPUID регистр не индивидуален?
Serj78
сообщение Aug 5 2010, 08:36
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Хотел найти что-то для идентификации устройства, например индивидуальный номер, зашитый в процессор. ( STM32F103)

Посмотрел описание регистра CPUID в NVIC ... по нему , получается, только ревизию установить можно...

Возник вопрос- а есть ли у SЕM32F103 индивиальный номер?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sonycman
сообщение Aug 5 2010, 12:33
Сообщение #2


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Читать можно, к примеру, так:
Код
typedef    __packed struct
{
    unsigned short    b15_0;
    unsigned short    b16_31;
    unsigned int    b32_63;
    unsigned int    b64_95;
} UNIQUE_ID;

const UNIQUE_ID    *id = (UNIQUE_ID*) 0x1FFFF7E8;

    unsigned int id_l, id_m, id_h;

    id_l = id->b15_0 | (id->b16_31 << 16);
    id_m = id->b32_63;
    id_h = id->b64_95;
Go to the top of the page
 
+Quote Post
Serj78
сообщение Aug 6 2010, 04:22
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Спасибо, буду пробовать..

никогда не работал с указателями таким образом, это трудное для моего понимания место:

const UNIQUE_ID *id = (UNIQUE_ID*) 0x1FFFF7E8;

сначала мы объявили структуру, а потом всю ее объявили как константу, и назначили ей место в памяти?...


при присваивании выдает много ошибок, вероятно так это делать нельзя или в настройках компилятора дело?
похоже указатель на id ему сильно не нравится

Код
t-arm.c(138): error:  #77-D: this declaration has no storage class or type specifier
t-arm.c:       id_l = id->b15_0 | (id->b16_31 << 16);
t-arm.c:       ^
t-arm.c(138): error:  #147: declaration is incompatible with "unsigned int id_l" (declared at line 136)
t-arm.c:       id_l = id->b15_0 | (id->b16_31 << 16);
t-arm.c:       ^
t-arm.c(138): error:  #28: expression must have a constant value
t-arm.c:       id_l = id->b15_0 | (id->b16_31 << 16);
t-arm.c:                               ^
t-arm.c(139): error:  #77-D: this declaration has no storage class or type specifier
t-arm.c:       id_m = id->b32_63;
t-arm.c:       ^
t-arm.c(139): error:  #147: declaration is incompatible with "unsigned int id_m" (declared at line 136)
t-arm.c:       id_m = id->b32_63;
t-arm.c:       ^
t-arm.c(139): error:  #28: expression must have a constant value
t-arm.c:       id_m = id->b32_63;
t-arm.c:                ^
t-arm.c(140): error:  #77-D: this declaration has no storage class or type specifier
t-arm.c:       id_h = id->b64_95;
t-arm.c:       ^
t-arm.c(140): error:  #147: declaration is incompatible with "unsigned int id_h" (declared at line 136)
t-arm.c:       id_h = id->b64_95;
t-arm.c:       ^
t-arm.c(140): error:  #28: expression must have a constant value
t-arm.c:       id_h = id->b64_95;
t-arm.c:                ^
t-arm.c: t-arm.c: 0 warnings, 10 errors
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 17:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01756 секунд с 7
ELECTRONIX ©2004-2016