我正在尝试学习C来在德州仪器MSP430上编程这个小程序。你能帮我理解((unsigned char *) 0x0023)
部分吗?
我在理解这个Define指令的这个中间部分时遇到了问题。我试过这个,但在((unsigned char *) 0x0023)
部分没有发现任何内容。这看起来像一个类型转换,但它没有任何东西。
我主要担心的是0x0023(十进制35)。这只是一个35位的无符号字符指针吗?
代码:
#define P1IFG_ptr ((unsigned char *) 0x0023) unsigned char result;
非常感谢任何帮助,并提前感谢您。
答案 0 :(得分:3)
((unsigned char *) 0x0023)
指向地址0x23
的指针我认为代码示例中缺少换行符......
在MSP430上,这是端口P1中断标志寄存器:
每个PxIFGx位是其相应I / O引脚的中断标志 当所选输入信号边沿出现在引脚上时置位。所有 PxIFGx中断标志在它们对应时请求中断 PxIE位和GIE位置1。必须重置每个PxIFG标志 软件。软件还可以设置每个PxIFG标志,提供一种方法 生成软件启动的中断。位= 0:无中断 挂起位= 1:中断挂起只有转换,而不是静态 水平,导致中断。如果在Px期间设置了任何PxIFGx标志 中断服务程序,或在a的RETI指令后设置 执行Px中断服务程序,设置PxIFGx标志 产生另一个中断。这确保了每次转换 确认。
您可以从此注册表中读取,例如:
unsigned char result;
result = *P1IFG_ptr;
或写信给它,例如:
*P1IFG_ptr = 1;