Обычно есть готовые библиотеки для работы с частями контроллера. А у контроллера поддержка 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. То есть авторы проекта его зачем-то не просто вырезали из готовых исходников, но и даже подправили нумерацию, чтобы не сбилась. То есть, это было сделано сознательно. Зачем -- ещё предстоит выяснить.