关于2540的Timer1的PWM
同样配置Timer1的通道1,2,3为PWM输出,
PERCFG &= ~0x40;
P0DIR |= 0x38;
P0SEL |= 0x38;
T1CTL &= ~0x03;
T1CNTL = 0x0;
TIMIF &= ~0x40;
T1CTL |= 0x02;
T1CTL |= 0x8;
T1CCTL1 &= ~0x40;
T1CCTL1 |= 0x04;
T1CCTL1 |= 5<<2;
程序执行到此,P0-3口是低电平,与预期相符; 但程序改为:
PERCFG &= ~0x40;
P0DIR |= 0x38;
P0SEL |= 0x38;
T1CTL &= ~0x03;
T1CNTL = 0x0;
TIMIF &= ~0x40;
T1CTL |= 0x02;
T1CTL |= 0x8;
T1CCTL2 &= ~0x40;
T1CCTL2 |= 0x04;
T1CCTL2 |= 5<<2; 时,P0_4有约8Hz的方波输出, 请问这是何原因导致?
是PERCFG &= ~0x40; 这句的问题, 这样写时,UART0也被配置在功能1上, 与Timer1有冲突, 但不明白的是,程序中并没有使用UART0,为何仍出现了影响,该为 PERCFG &= ~0x40; PERCFG |= ~0x1; 即可。
hi qing,
如果你把UART0 也配置上, 同时也配置了P0DIR, 不管程序里面是否用到了 实际上的UART 传输, 都很有可能会影响到IO 口的输入输出.
所以最好不要把IO 口复用, 除非你能非常好地控制 : )
是这样的
谢谢上面两位的解答, 但是个人认为:通常某个外设没有配置时,应该是停用的,以节省功耗,这里这样做是源于何种理由?