首页 > 解决方案 > STM 8 寄存器地址

问题描述

我的问题与 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 略有不同。

标签: cembeddedmicrocontrollerstm8

解决方案


推荐阅读