This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我正在尝试开发一个程序、从下而上读取 DHT-11传感器。 因此、我需要在捕获模式下使用计时器。
选择 P1.3作为捕捉输入。 我想在下降沿进行捕获。 但是、当我尝试将3.3V 连接到 P1.3然后去连接时、我无法创建中断。 这里可能出了什么问题? 也许我不理解计时器的某些方面。
int main(void) { WDTCTL = WDTPW | WDTHOLD; P1SEL1 |= BIT3; // 10 for secondary role P1SEL0 &= ~BIT3; P1DIR &= ~BIT3; PM5CTL0 &= ~LOCKLPM5; TA1CTL |= MC__STOP; TA1CCTL2 = CM_2 | CCIS_0 | CAP | CCIE | SCS; TA1CTL = TASSEL__SMCLK | MC__CONTINUOUS; __enable_interrupt(); while(1); } #pragma vector = TIMER1_A1_VECTOR __interrupt void Timer_A1(void){ __no_operation(); }
提前感谢。
您必须启用全局中断。 此外、您说您施加3.3V 电压、然后断开连接。 什么可以确保在您断开连接后电压降至零?
是的、我忘记在这里的示例代码中包含全局中断使能。 实数代码更长、但我都注释了不必要的部分。 因此、实际代码实际上与上述代码类似(启用全局中断时、我更新了上面的示例)。
对于第二个问题、我使用万用表测量 P1.3上的电压并将其接地短路、以确保出现压降。 它不起作用-触发中断。
我还尝试了上升沿或两个沿、并确保电压电平确实正确。 未触发中断。
下面是一些有趣的发现:
1. TA1R 始终运行
TA1CCR2始终为0
TA1CCTL0和 TA1CCTL1的 CCIFG 位始终为1、但 TA1CCTL2 CCIFG 始终为0。
您好!
根据器件数据表6-20、P1SEL1应为0、P1SEl0应为1。
此致、
现金 Hao
啊、你是对的。 但在我的国防中、数据表包含两种不同的 P1.3函数顺序。 感谢您的回答。