2015-11-25 9 views
1

Я использую Keil uVision v5.14 для компиляции кода для процессора nrf51xx. Я всегда использовал заголовочный файл nrf_delay.h, который имеет некоторые процедуры задержки, закодированные в ассемблере. Внезапно, получить вышеуказанную ошибку во время компиляции, на всех линиях «NOP»:Неожиданные символы в конце строки в Keil - но их нет

#if defined (__CC_ARM ) 
static __ASM void __INLINE nrf_delay_us(uint32_t volatile number_of_us) 
{ 
loop 
    SUBS R0, R0, #1 
    NOP 
    NOP 
    NOP 
    NOP 
    NOP 
    NOP 
    NOP 
    NOP 
    NOP 
    NOP 
    NOP 
    NOP 
    BNE loop 
    BX  LR 
} 
#elif defined (__ICCARM__) 
... 

текст ошибки:

..\..\..\Include\nrf_delay.h(12): error: A1137E: Unexpected characters at end of line 
..\..\..\Include\nrf_delay.h(13): error: A1137E: Unexpected characters at end of line 
..\..\..\Include\nrf_delay.h(14): error: A1137E: Unexpected characters at end of line 
..\..\..\Include\nrf_delay.h(15): error: A1137E: Unexpected characters at end of line 
..\..\..\Include\nrf_delay.h(16): error: A1137E: Unexpected characters at end of line 
..\..\..\Include\nrf_delay.h(17): error: A1137E: Unexpected characters at end of line 
..\..\..\Include\nrf_delay.h(18): error: A1137E: Unexpected characters at end of line 
..\..\..\Include\nrf_delay.h(19): error: A1137E: Unexpected characters at end of line 
..\..\..\Include\nrf_delay.h(20): error: A1137E: Unexpected characters at end of line 
..\..\..\Include\nrf_delay.h(21): error: A1137E: Unexpected characters at end of line 
..\..\..\Include\nrf_delay.h(22): error: A1137E: Unexpected characters at end of line 
..\..\..\Include\nrf_delay.h(23): error: A1137E: Unexpected characters at end of line 

Странная вещь это, нет абсолютно никаких дополнительных символов после NOP. Я попытался также заменить nrf_delay.h более старой версией или изменить параметры проекта в соответствии с рабочим, но не повезло.

Все это заключено между

#if defined (__CC_ARM ) 

, но я не уверен, определяется ли «_CC_ARM» или «ICCARM». Компилятор C - это Armcc V5.05.

обновление

Я начал с рабочего проекта, и я добавил изменения, которые я с ума от последнего временного шага за шагом. Кажется, что просто включение nrf_delay.h в новый .c файл проекта вызывает проблему.

Однако nrf_delay.h включен во многие другие .c файлы, а nrf_delay_us() используется много раз без такой проблемы.

обновление 2 - решена, но все-таки мистерия Итак, у меня есть некоторые #defines на верхней части моего файла .c. Если бы это так:

#include <stdio.h> 
#include <stdint.h> 
#include "fw_update.h" 
#include "registers.h" 
#include "nrf51.h" 
#include "boarddef.h" 
#include "hal.h" 
#include "nrf_delay.h" <-- this is giving the error 

если бы это так:

#include <stdio.h> 
#include <stdint.h> 
#include "nrf_delay.h" <-- this works! 
#include "fw_update.h" 
#include "registers.h" 
#include "nrf51.h" 
#include "boarddef.h" 
#include "hal.h" 

Любая идея, почему?

+0

Иногда это может быть ошибка текстового редактора, попробуйте удалить строки и переименовать. –

+0

Спасибо @WeatherVane, не помогая. – Vitomakes

+0

... без использования копия/вставка. –

ответ

0

unexpected#define из NOP встречается в файле заголовка.

12 ошибок соответствуют 12 NOP, что подразумевает проблему с NOP, а не с проблемой окончания строки. Также возникновение ошибки изменилось относительно размещения заголовка.

Имея такой короткий общий токен NOP, определенный в каком-либо файле заголовка, имеет эти неудачные эффекты. ИМО, если это возможно, заново запустите завод #define.

Смежные вопросы