ошибка константы

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
sx386
Потрогал лапой паяльник
Сообщения: 394
Зарегистрирован: Сб апр 28, 2012 16:04:14

ошибка константы

Сообщение sx386 »

У меня выдаёт сообщение об ошибке, но при этом всё программируется, запускается и работает.

Код: Выделить всё

Flash download warning: 4 out of 4 bytes from data record CODE:[0x1FF80078,0x1FF8007B] will not be flashed 
Для корректировки опорного напряжения я использовал данные ячеек по указанному даташите адресу:

Код: Выделить всё

const unsigned char Factory_VREFINT @ 0x1FF80078;
Отчего ошибка - непойму. Я произвожу только чтение и никак не запись.

Изображение
Критикуешь - предлагай. Предлагаешь - делай. Делаешь - отвечай.
Реклама
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: ошибка константы

Сообщение Myp3ik »

Может лучше так:

Код: Выделить всё

const uint16_t Factory_VREFINT = *(uint16_t*)0x1FF80078;
или так

Код: Выделить всё

#define Factory_VREFINT  ((uint16_t)(*(uint16_t*)0x1FF80078))
Иван Сусанин - первый полупроводник :solder:
Реклама
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

Re: ошибка константы

Сообщение Shapa »

sx386 писал(а):У меня выдаёт сообщение об ошибке, но при этом всё программируется, запускается и работает.

Код: Выделить всё

Flash download warning: 4 out of 4 bytes from data record CODE:[0x1FF80078,0x1FF8007B] will not be flashed 
Ошибочно полагать, что здесь "ошибка константы". Вам же флешер точно говорит "0x1FF8007B will not be flashed".
Пащиму? Потому, что 0x1FF8007B не есть область флеша которая может быть модифицирована (по просту это ro, noinit). Но ваш линкер (подозреваю что IAR) об этом не знает, потому и считает своим долгом её проинитить, т.е. записать некое значение, что не возможно ( в данном контексте)
Myp3ik писал(а): const uint16_t Factory_VREFINT = *(uint16_t*)0x1FF80078;
#define Factory_VREFINT ((uint16_t)(*(uint16_t*)0x1FF80078))
Отличный вариант. Лучше использовать разименование поинтеров
Ответить

Вернуться в «ARM»