我的问题与 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 单片机上的输出:
函数外地址:0x0110
函数内部地址:0x0110
所以我的问题是它为什么要这样做,它发生在哪里,如果我写入 START_ADDRESS 寄存器,它是在 0x1001 还是 0x0110 写入?可能只是两个系统上的 printf 略有不同。