1

我正在尝试学习 C 来在德州仪器 MSP430 上编写这个小程序。你能帮我理解这((unsigned char *) 0x0023)部分吗?

我在理解此定义指令的中间部分时遇到问题。我试过查找这个,但在这((unsigned char *) 0x0023)部分没有找到任何东西。这看起来像一个类型转换,但它没有转换任何东西。

我主要关心的是 0x0023(十进制 35)。这只是一个 35 位的无符号字符指针吗?

代码:

#define P1IFG_ptr ((unsigned char *) 0x0023) unsigned char result;

任何帮助都非常感谢,并在此先感谢您。

4

1 回答 1

3
((unsigned char *) 0x0023)

是指向地址 0x23的指针

我认为您的代码示例中缺少换行符...

在 MSP430 上,这是端口 P1 中断标志​​寄存器:

每个 PxIFGx 位都是其相应 I/O 引脚的中断标志,并在引脚出现所选输入信号沿时置位。所有 PxIFGx 中断标志​​都在其相应的 PxIE 位和 GIE 位被置位时请求中断。每个 PxIFG 标志都必须用软件复位。软件还可以设置每个 PxIFG 标志,提供一种生成软件启动中断的方法。位 = 0:没有挂起的中断 位 = 1:有一个挂起的中断 只有转换而不是静态电平会导致中断。如果任何 PxIFGx 标志在 Px 中断服务程序期间被设置,或者在 Px 中断服务程序的 RETI 指令执行后被设置,则设置的 PxIFGx 标志会产生另一个中断。这确保了每个转换都得到确认。

您可以从此寄存器中读取,例如:

unsigned char result;
result = *P1IFG_ptr;

或写信给它,例如:

*P1IFG_ptr = 1;
于 2011-09-19T00:58:48.537 回答