Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

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

Чт фев 09, 2017 20:15:54

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

Код:
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

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

Код:
const uint16_t Factory_VREFINT = *(uint16_t*)0x1FF80078;


или так

Код:
#define Factory_VREFINT  ((uint16_t)(*(uint16_t*)0x1FF80078))

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

Пт фев 10, 2017 17:15:30

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

Отличный вариант. Лучше использовать разименование поинтеров
Ответить