嵌入式 > 技术百科 > 详情

MSP430学习笔记3-PWM的产生

发布时间:2024-09-14 发布时间:
|

这个程序主要是利用定时器的比较输出功能来产生PWM波控制LED,定时器A的比较输出对应P2.3 P2.4,因此在程序的一开始需要设置比较匹配的工作模式,需要说明的是头文件中已经对各种模式给了详细的定义,不需要在去配置寄存器,程序较为简单,稍微扩展一下去控制舵机也很容易,大家自己分析。

  1. /******************************************************* 

  2. 程序功能:用从P2.3和P2.4输出的PWM波形驱动LED闪烁 

  3. ------------------------------------------------------- 

  4. 拨码开关设置:将LED位拨至ON,其余拨至OFF 

  5. 测试说明:观察LED的亮灭的时间长短 

  6. *******************************************************/  

  7. #include    

  8.   

  9. void main(void)  

  10. {  

  11.   /*下面六行程序关闭所有的IO口*/  

  12.     P1DIR = 0XFF;P1OUT = 0XFF;  

  13.     P2DIR = 0XFF;P2OUT = 0XFF;  

  14.     P3DIR = 0XFF;P3OUT = 0XFF;  

  15.     P4DIR = 0XFF;P4OUT = 0XFF;  

  16.     P5DIR = 0XFF;P5OUT = 0XFF;  

  17.     P6DIR = 0XFF;P6OUT = 0XFF;  

  18.     

  19.   WDTCTL = WDTPW + WDTHOLD;                 // 关狗  

  20.   P6DIR |= BIT2;P6OUT |= BIT2;              //关闭电平转换  

  21.   P2DIR = 0xff;                             // P2端口设置为输出  

  22.   P2OUT = 0xff;                             // 关闭其他LED  

  23.   P2SEL |= BIT3 + BIT4;                     // P2.3和P2.4连接内部模块,使用的是第二功能作为TimerA的比较输出。  

  24.   CCR0 = 4096-1;                            // PWM周期为1S  

  25.   CCTL1 = OUTMOD_7;                         // 捕捉比较寄存器的配置,工作在方式7,计数值等于比较值时输出置位  

  26.   CCR1 = 4000;                              // 输出1的比较值  

  27.   CCTL2 = OUTMOD_7;                         // CCR2 reset/set  

  28.   CCR2 = 500;                              // 输出2的比较值改变此值即可以改变输出的pwm波的占空比  

  29.   TACTL = TASSEL_1 + ID_3 + MC_1;           // ACLK/8, up mode  

  30.   

  31.   //_BIS_SR(LPM3_bits);                       // Enter LPM3  

  32.   LPM3;  

  33.       

  34. }  



 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
光纤通道的实时数字图像存储