23:59 

Аппендикс

zHz00
Мне дали готовый проект для микроконтроллера когда-то. И вот понадобилось добавить туда поддержку SPI (последовательный аппаратный интерфейс для связи с внешними устройствами). Проект на Си, контроллер LPC.

Обычно есть готовые библиотеки для работы с частями контроллера. А у контроллера поддержка SPI была. Но заголовочного файла для SPI почему-то не было. Однако файлы имели имена типа lpc_model_device.h, где model -- модель устройства, а device -- подсистема контроллера. Например, lpc_1111_usart.h -- поддержка USART.

Забиваю в гугл -- lpc_1111_spi.h -- и нахожу библиотеку, из которой были стырены заголовочные файлы проекта, который мне дали. Библиотека от производителя -- NXP. Беру нужные два файла (заголовочный и сишный), качаю, добавляю в проект, пытаюсь собрать.

Вижу сообщение об ошибке:

LPC_SPI_BASE: identifier not found.

Как же так. Открываю "базовый" заголовочный файл, содержащий идентификаторы всех устройств (lpc_1111_cgu.h). Он имеет ту же дату, что и файл в интернете. Но в файле в интернете этот идентификатор есть! А в моём его нет.

Смотрю, что написано в моём:

enum DEVICES
{
LPC_DEV1_BASE=0,
//...
LPC_SSP_BASE,
LPC_I2S_BASE=LPC_SSP_BASE+2,
///...
};

В файле из интернета же после SSP_BASE расположен SPI_BASE. То есть авторы проекта его зачем-то не просто вырезали из готовых исходников, но и даже подправили нумерацию, чтобы не сбилась. То есть, это было сделано сознательно. Зачем -- ещё предстоит выяснить.

@темы: Борьба с техникой, Программирование

URL
   

Untitled

главная