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.
工具/软件:Code Composer Studio
我正在尝试在开关的帮助下控制 LED。 这是代码
#include #define SWITCH_ST态(P1IN 和0x02) void main (void){ WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器 PM5CTL0 &=~LOCKLPM5; /********配置 CS 寄存器******** / CSCTL0_H = 0xA5;//解锁 CS 寄存器 CSCTL1_H = 0x00;//将 DCO 设置为8MHz CSCTL1_L = 0x0c; CSCTL2 = 0x0003 | 0x0100 | 0x0030;//设置 DCO = SMCLK = MCLK CSCTL3 = 0x0000 | 0x0000 | 0x0000;//现在将分频器值设置为1 CSCTL0_H = 0x00;//锁定 CS 寄存器 /******** / P1DIR |= 0x01; P1OUT |= 0x01;//初始 LED 在 P1.0上 P1DIR |= 0x02; P1OUT |= 0x02;//P1.1初始为高电平 P1DIR &= 0xFD;//P1.1在输入引脚上设置 while (1){ 如果(switch_state)=0x00){//如果开关按下,则打开 LED P1OUT |= 0x01;//我是否需要上拉寄存器? while ((switch_state)=0x00);//保持 LED 亮起,直到交换机释放 } P1OUT &=~0x01; }//end of while (1) }
在调试期间、我发现一旦 Port1的第2位变为低电平、它永远不会恢复到高电平。 它进入 if()并被卡住
while ((switch_state)==0x00);
是否有任何有助于纠正此问题的软件/代码更改?
P1OUT |= 0x01; P1DIR |= 0x01; P1REN |= 0x02; P1OUT |= 0x02; while (1) { if (!switch_state) { P1OUT |= 0x01; } 否则 { P1OUT &=~0x01; }