Мой вопрос связан с тем, как микроконтроллеры STM8 решают проблемы. Может быть, я что-то упустил, я написал небольшую программу, где проблема существует. Странно то, что на моем компьютере он отличается от MCU stm8.
#include <stdio.h>
#define START_ADDRESS *(unsigned char*)0x1001
void printAddress(unsigned char * address){
printf("The address inside the function: %p\n",address);
}
int main()
{
printf("The address outside function: %p\n",&START_ADDRESS);
printAddress(&START_ADDRESS);
return 0;
}
Вывод этой функции на моем компьютере соответствует ожидаемым адресам.
output:
Адрес вне функции: 0x1001
Адрес внутри функции: 0x1001
выход на STM8 mcu:
Адрес вне функции: 0x0110
Адрес внутри функции: 0x0110
Поэтому мой вопрос: почему это происходит, где это происходит и если я пишу в START_ADDRESS? зарегистрироваться это запись в 0x1001 или 0x0110? Может случиться так, что printf в обеих системах немного отличается.