Ошибка при передаче аргумента из указателя в незакрытое адресное пространство - PullRequest
2 голосов
/ 04 мая 2020

Я использую микроконтроллер ATMEGA16M1 и MPLAB IDE.

У меня есть следующая функция для записи в порты.

void Lcd8_Write_String(char *a)
{
    int i;
    for(i=0;a[i]!='\0';i++)
    Lcd8_Write_Char(a[i]);
}

void Lcd8_Write_Char(char a)
{
    pinChange(RS,1);             // => RS = 1
    Lcd8_Port(a);                //Data transfer
    pinChange(EN,1);             // => E = 1
    _delay_ms(1);
    pinChange(EN,0);             // => E = 04
    _delay_ms(1);
}

Я вызываю функцию с Lcd8_Write_String("Hello World");.

Я получаю error: passing argument 1 of 'Lcd8_Write_String' from pointer to non-enclosed address space.

Как мне устранить эту ошибку?

1 Ответ

2 голосов
/ 04 мая 2020

Если вы напишите:

Lcd8_Write_String("Hello World");

Строка "Hello World" будет в памяти Fla sh вашего микроконтроллера, а не в оперативной памяти. Таким образом, вы должны были переключить свою функцию на:

void Lcd8_Write_String(const char *a)
...