Я использую 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"
Любая идея, почему?
Иногда это может быть ошибка текстового редактора, попробуйте удалить строки и переименовать. –
Спасибо @WeatherVane, не помогая. – Vitomakes
... без использования копия/вставка. –