我有一段代码我不确定是否会非常感谢它的工作原理。
第一点是关于类型转换。有人可以告诉我我是否正确阅读了以下代码:
#define A_TIME 0xC0500000
#define B_TIME *(UINT_8 *)(A_TIME + 0x00002909)
这个 B_TIME 的输出是一个指向 8 位 = 0x09 的无符号整数的指针吗?我不确定类型转换是如何工作的?它是否将 8 LSB 分配给 B_TIME?另外,我对 *(UINT_8 *)? 这到底是什么意思/说什么?它是一个指向 8 位无符号整数的指针?
一旦我知道了上述内容,第二部分可能对我来说很清楚,但无论如何我都会发布它:
UINT_8 Timer = 0;
Input_Time (&Timer);
#define C_TIME *(UINT_16 *)0xC0C0B000
#define MASK 0x003F
void Input_Time (UINT_8 *Time)
{
*Time = 0xC0;
*Time |= (UINT_8)((C_TIME >> 4) & MASK);
return;
}
Input_Time 函数后 *Time 的值是多少?有人可以逐步完成代码并为我解释每个步骤吗?
为问题的新手道歉(这是一个词吗?!)。
非常感激。詹姆士
编辑:
好的,我对以上内容很满意。谢谢。在调用 Input_Time() 之后,我现在对代码中发生的以下情况感到困惑:
#define OUT_TIME *(UINT_8 *)0xC0411297
OUT_TIME = Timer;
这怎么可能?OUT_TIME
地址0XC0411297内的8位值不是吗?这是如何运作的?