⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 MSP430FE425的16位低功耗单片机的TA_PWM通用程序。
💻 C
字号:
/*
               
          MSP430F全系列单片机TA定时器PWM发生器程序库
                             演示程序


  说明:该程序演示PWM发生器程序库里各函数的用法。通过调用程序库内的函数,改
        变2路PWM调制方波的占空比,从而控制马达转速和LED亮度。

  (C)西安电子科技大学 测控技术与仪器教研中心 编写:谢楷 2008/02/19 
  
*/
//               MSP430FE425
//            -----------------
//           |              XIN|-
//           |                 |   32kHz
//           |             XOUT|-
//           |                 |
//           |         P1.2/TA1|-------三极管驱动--------> 小马达
//           |         (CCR1)  |     _    _    _    _
//           |                 |   _| |__| |__| |__| |_
//           |                 |       0%~100% PWM
//           |                 |
//           |                 |
//           |         P2.0/TA2|------------------------->   LED
//           |         (CCR2)  |     _    _    _    _
//           |                 |   _| |__| |__| |__| |_
//           |                 |       0%~100% PWM

#include "msp430X42X.h"   /*430单片机寄存器头文件*/
#include "TA_PWM.h"       /*PWM发生器函数库头文件*/

/****************************************************************************
* 名    称:Delay()
* 功    能:延迟             
* 入口参数:无
* 出口参数:无
****************************************************************************/
void Delay()
{  unsigned long int i;
   for(i=0;i<200000;i++);
}
/****************************************************************************
* 名    称:主程序
* 功    能:演示PWM库函数用法           
* 入口参数:无
* 出口参数:无
****************************************************************************/
void main( void )
{ 
  WDTCTL=WDTPW+WDTHOLD;  //停止看门狗
  FLL_CTL0|=XCAP18PF;	  //配置晶振负载电容
  TA_PWM_Init('A',1,'P','P');   //将定时器TA初始化成为PWM发生器
                  //时钟源=ACLK ; 无分频;  通道1和通道2均设为高电平模式。
  TA_PWM_SetPeriod(500);        //通道1/2的PWM方波周期均设为500个时钟周期

  while(1)
  {
    TA_PWM_SetDuty(1,200);      //通道1输出方波高电平时间设为200个时钟周期
    Delay();
    TA_PWM_SetDuty(1,400);      //通道1输出方波高电平时间设为400个时钟周期
    Delay();
    TA_PWM_SetDuty(1,500);      //通道1输出方波高电平时间设为500个时钟周期
    Delay();                    //以上过程可观察到电动机逐渐加速
    TA_PWM_SetDuty(1,300);      //通道1输出方波高电平时间设为300个时钟周期
    Delay();                    //电动机减速
    TA_PWM_SetDuty(1,0);        //通道1输出方波高电平时间设为0个时钟周期
    Delay();                    //电动机停机
    TA_PWM_SetDuty(2,100);      //通道2输出方波高电平时间设为100个时钟周期
    Delay();
    TA_PWM_SetDuty(2,200);      //通道2输出方波高电平时间设为200个时钟周期
    Delay();
    TA_PWM_SetDuty(2,300);      //通道2输出方波高电平时间设为300个时钟周期
    Delay();
    TA_PWM_SetDuty(2,400);      //通道2输出方波高电平时间设为400个时钟周期
    Delay(); 
    TA_PWM_SetDuty(2,500);      //通道2输出方波高电平时间设为500个时钟周期
    Delay();                    //以上过程可观察到LED逐渐变亮
    TA_PWM_SetPermill(2,1000);  //通道2输出方波高电平时间设为100.0%   
    Delay();
    TA_PWM_SetPermill(2,600);   //通道2输出方波高电平时间设为60.0%      
    Delay();
    TA_PWM_SetPermill(2,400);   //通道2输出方波高电平时间设为40.0%        
    Delay(); 
    TA_PWM_SetPermill(2,100);   //通道2输出方波高电平时间设为10.0%      
    Delay(); 
    TA_PWM_SetPermill(2,0);     //通道2输出方波高电平时间设为0      
    Delay();                     //以上过程可观察到LED逐渐变暗
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -