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
我的设计需要一个引脚在5分钟内保持低电平、然后持续5秒、并且想要不停地重复。 我想为此使用计时器。
#include unsigned int i=1; int main (void) { WDTCTL = WDTPW | WDTHOLD; //停止 WDT //配置 GPIO P1DIR |= BIT2; //禁用 GPIO 上电默认高阻抗模式以激活 //先前配置的端口设置 PM5CTL0 &=~LOCKLPM5; TA0CCTL0 = CCIE; //启用 TACCR0中断 TA0CCR0 = 50000; TA0CTL = tassel_SMCLK | MC__Continous;// SMCLK、连续模式 _bis_SR_register (GIE); //输入 LPM0,带中断 __no_operation(); //对于调试 器} void __attribute__((interrupt (TIMER0_A0_Vector)) Timer0_A0_ISR (void) { i++; if (i%2=0) { P1OUT |= BIT2; TA0CCR0 += 50; } if (i%2!=0) { P1OUT &=0xFFFB; TA0CCR0 +=65535; } }
此代码正常工作、但我需要较长的关断时间、如上所述。 我该怎么做?
我可以使用计时器以外的其他器件来执行上述操作吗?
提前感谢您。
Viswanath。
此时、中断处理程序有两种状态。
名称"i"毫无意义;将其重命名为"state"。 当它到达最后一个状态时、将其复位、而不是查看其最低位。
然后在每个状态下执行必要的操作:
开关(状态){ 案例0: TA0CCR0 += 15000; P1OUT |= BIT2; 中断; 情况1: TA0CCR0 += 50000; P1OUT &=~BIT2; 中断; 案例2: 案例3: ... 案例20: TA0CCR0 += 50000; break; } state++; if (state == 21) 状态= 0;