Извинения за невероятно смутное название;Здесь я попытаюсь быть более конкретным.
Я разрабатываю программу на микроконтроллере NRF52832 в интегрированной среде разработки SEGGER Embedded Studio, которая получает данные от внешнего АЦП через SPI и выводит сигнал ШИМ с рабочим циклом, которыйзависит от данных от АЦП.
Я получил пример кода для драйвера SPI и драйвера PWM, работающих в отдельных проектах, и теперь я пытаюсь объединить их.Однако, когда я вставляю функцию из, скажем, драйвера ШИМ в драйвер SPI и вставляю соответствующий файл включения в драйвер SPI, я получаю ошибку в (казалось бы) не связанном заголовочном файле.Вот конкретный пример:
(1) Я добавляю макрос
APP_PWM_INSTANCE(PWM1,1);
в драйвер SPI для инициализации экземпляра ШИМ, как это делает драйвер ШИМ.Конечно, без заголовочного файла, содержащего определение макроса, я получил бы ошибку.
(2) Итак, я включаю заголовочный файл:
#include "/Users/payton/opt/nRF5_SDK_15.0.0/nRF5_SDK_15.0.0_a53641a/components/libraries/pwm/app_pwm.h"
Компилятор принимает новый заголовочный файл и добавленный макрос, но сборка завершается неудачно из-за следующей ошибки в серединезаголовочный файл nrfx_timer.h:
#define NRFX_TIMER_INSTANCE(id) \
{ \
.p_reg = NRFX_CONCAT_2(NRF_TIMER, id), \
.instance_id = NRFX_CONCAT_3(NRFX_TIMER, id, _INST_IDX), \
.cc_channel_count = NRF_TIMER_CC_CHANNEL_COUNT(id), \
}
ERROR:
'NRFX_TIMER1_INST_IDX' undeclared here (not in a function)
in definition of macro 'NRFX_CONCAT_3_'
in expansion of macro 'NRFX_CONCAT_3'
in expansion of macro 'NRFX_TIMER_INSTANCE'
in expansion of macro 'NRF_DRV_TIMER_INSTANCE'
in expansion of macro 'APP_PWM_INSTANCE'
Build failed
Ошибка указывает на строку, которая определяет .instance_id
Есть идеи, почему это происходит?