MSP430的PWM输出是否一定是某个固定的I/O口,能否灵活设置,比如说让P4.0作为PWM输出,如何操作?

如题所述

  看了下官方实例
  #include <msp430x44x.h>

  void main(void)
  {
  WDTCTL = WDTPW +WDTHOLD; // Stop WDT
  FLL_CTL0 |= XCAP14PF; // Configure load caps
  TACTL = TASSEL1 + TACLR; // SMCLK, Clear Tar
  CCR0 = 512-1; // PWM Period = 488uS
  CCTL1 = OUTMOD_7; // CCR1 reset/set
  CCR1 = 384; // CCR1 PWM duty cycle
  CCTL2 = OUTMOD_7; // CCR2 reset/set
  CCR2 = 128; // CCR2 PWM duty cycle
  P1DIR |= 0x04; // P1.2 output
  P1SEL |= 0x04; // P1.2 TA1 option
  P2DIR |= 0x01; // P2.0 output
  P2SEL |= 0x01; // P2.0 TA2 otion
  TACTL |= MC0; // Start Timer_A in up mode

  for (;;)
  {
  _BIS_SR(CPUOFF); // Enter LPM0
  _NOP(); // Required only for C-spy
  }
  }
  因为P1.2和P2.0是TA的复用口,所以比较方便。
  其实PWM的原理无非就是出一个矩形波,一段时间高电平,一段时间低电平
  所以你要是不用中断的情况下,用其他的口,通过延时等完全可以达到在你给定时间间隔的电平变化,除了P1和P2口外其他口都没有中断,好像是的,忘记了,说的这些都是针对MSP430X44X系列
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-12
可以这样来做:利用定时器,定时中断来实现。
两个函数,一个初始化配置函数,用于设置频率和占空比,也就是定时中断的频率及定时时间间隔。
一个中断函数,中断函数里面对P4.0进行取反操作,输出波形。
相似回答