请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430G2333 你(们)好
我很难让 Timer1_A0和 A1在不同的频率下工作、Timer1_A1似乎遵循我在 Timer1_A0上设置的任何内容。
根据我的理解、Timer1_A0、A1和 A2应该能够正常工作?
在以下代码中、我希望 LED1切换1Hz、而 LED2切换4Hz、但我看到它们都切换1Hz。 我犯了什么错误?
感谢大家!
int main (void){ //InitialSystem (); WDT_STOP (); /* 12.5pF 至 ACLK */ BCSCTL3 |= XCAP_3; //将 ACLK 除以8 */ BCSCTL1 |= DIV_3; //将所有 IO 初始化至已知状态*/ P1DIR = 0xFF; P2DIR = 0x00;OUT = 0xP2PIR = 0x00;= 0xP2DIR = 0x00; P3OUT = 0x00; /* ACLK、向上计数模式、清除计时器*/ TA1CTL = tassel_1 + MC_1 + TACLR; /*启用中断*/ TA1CCTL0 |= CCIE; TA1CCR0 = One_second; /*启用中断*/ TA1CCTL1 |= CCIE; TA1CCR1 =(One_MS * 250); LED1_OUTPUT (); LED2_OUTPUT (); FLASH_LED1 (3); _BIS_SR (GIE+LPM3_BITS); while (1); }
#pragma vector=Timer1_A1_vector __interrupt void Timer1_A1_ISR (void){ //当 TACCR1和 TACCR2中断请求得到服务时,CCIFG 自动复位*/ switch (TA1IV){ case 0x02:// Timer1_A1 */ LED2_OUT ^= LED2_BIT; break;* Timer1 ://* case 0x04:*/* Timer1:// break } //* Timer1 A0中断处理程序*/ #pragma vector=Timer1_A0_vector __interrupt void Timer1_A0_ISR (void){ //当 TACCRO 中断请求得到服务时,CCIFG 自动复位*/ timer_counter++; LED1_OUT ^= LED1_BIT; }