Страница 1 из 1

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

Добавлено: Чт фев 09, 2017 20:15:54
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;
Отчего ошибка - непойму. Я произвожу только чтение и никак не запись.

Изображение

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

Добавлено: Чт фев 09, 2017 20:37:25
Myp3ik
Может лучше так:

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

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

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

#define Factory_VREFINT  ((uint16_t)(*(uint16_t*)0x1FF80078))

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

Добавлено: Пт фев 10, 2017 17:15:30
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))
Отличный вариант. Лучше использовать разименование поинтеров