Other Parts Discussed in Thread: MSP430FR6989
尊敬的:
对于一个项目、我正在处理 MSP430FR6989上的存储器块的写入和读取。 因此、我将地址写入"从器件"(将存储该地址上的数据)、该地址不属于我可以写入的 MSP430FR6989地址块(1880h 直到19FFh)、而是像0x0060那样。 我 想对这个指针做一些算术运算。 但是、当使用调试工具时、我看到发生了一些奇怪的事情。
重要的代码是:
/* * 4个可用 RAM 段: * 1. D --> 1800h '到187Fh * 2. C -> 1880h '到18FFh * 3. b --> 1900h '直至187Fh * 4. a --> 1980h '直到19FFh * uint16_t volatile * address =(uint16_t *) getAddress (); if (address >=(uint16_t *) 0x0 && address <(uint16_t *) 0x100){//比较"指针" 地址=地址+ 900; if (address >=(uint16_t *) 0x1800){ __no_operation(); } }
问题出在行:"address = address + 900;" (900只是我用来查看发生了什么的一个示例编号)。
这时会将数字 x708 (十六进制)添加到地址(我尝试使用多个地址)。 这使我感到困惑、因为900的十六进制数是 x384、它不会翻倍至708 (但达到768、这是我所期望的)。 如果我使用 x900 (而不是十进制的900)、它会添加具有 x1200 (十六进制)的地址。
我可能遗漏了一些非常简单的东西。
此致。