为什么 0x40010800 + 0x0C 等于 0x40010830?
why 0x40010800 + 0x0C equals 0x40010830?
我尝试访问 RCC_APB2ENR 注册作为在 stm32nucleo f103rb 上闪烁绿色 LED 的第一步
然后我将 0x0C 添加到 0x40010800(RCC 基地址)。
预期结果为 0x4001080C 但实际结果为 0x40010830!!!
好像0x0C被左移了两次,但我不明白为什么会这样。
甚至在 Ubuntu,同样的事情也发生了。
请告诉我
开发板:stm32 nucleo f103rb
IDE:uVision 5
RCC_BASE
指向 unsigned int
。在您的平台上,此类型的大小为 4 个字节。
在对指针进行加法或减法操作时,您是通过操作数乘以元素大小来增加(或减少)地址。
详情看Pointer Arithmetic
我尝试访问 RCC_APB2ENR 注册作为在 stm32nucleo f103rb 上闪烁绿色 LED 的第一步
然后我将 0x0C 添加到 0x40010800(RCC 基地址)。
预期结果为 0x4001080C 但实际结果为 0x40010830!!!
好像0x0C被左移了两次,但我不明白为什么会这样。
甚至在 Ubuntu,同样的事情也发生了。
请告诉我
开发板:stm32 nucleo f103rb IDE:uVision 5
RCC_BASE
指向 unsigned int
。在您的平台上,此类型的大小为 4 个字节。
在对指针进行加法或减法操作时,您是通过操作数乘以元素大小来增加(或减少)地址。
详情看Pointer Arithmetic