1

私の質問は、STM8 マイクロコントローラーが物事に対処する方法に関係しています。多分私は何かが欠けている、私は問題が存在する小さなプログラムを書きました。奇妙なことに、私のコンピューターと stm8 MCU では違います。

#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;
}

私のコンピューターでのこの関数の出力は、予想どおりアドレスが一致しています。

出力:

関数外アドレス:0x1001

関数内のアドレス: 0x1001

STM8 MCU での出力:

関数外アドレス:0x0110

関数内のアドレス: 0x0110

だから私の質問は、なぜこれを行うのか、どこで起こっているのか、START_ADDRESS レジスタに書き込むと 0x1001 または 0x0110 に書き込むのかということです。両方のシステムの printf がわずかに異なるだけかもしれません。

4

0 に答える 0