MSP430PWM学习笔记

摘要:一直说要调调430的PWM控制器,却放到今天才调。
要准备电设,还是先把程序贴出,后面再做补充吧!

#include <msp430x14x.h>

#define MODE MC_1               //定时器工作模式,stop,Up to CCR0,Continous up,Up/Down

#define OUTMODE1 OUTMOD_6       //PWM1-PWM6的输出模式,参考手册
#define OUTMODE2 OUTMOD_2
#define OUTMODE3 OUTMOD_6
#define OUTMODE4 OUTMOD_2
#define OUTMODE5 OUTMOD_6
#define OUTMODE6 OUTMOD_2
/*----------------------------------------------------------------------------------
函数名称:Open_PWMB
功    能:打开PWM模块——定时器B
参    数:无
返回值  :无
----------------------------------------------------------------------------------*/
void Open_PWMB(void)
{
  TBCTL|=TBSSEL1 + ID_0 + MODE+ TBCLR ;
}
/*----------------------------------------------------------------------------------
函数名称:Close_PWMB
功    能:关闭PWM模块
参    数:无
返回值  :无
----------------------------------------------------------------------------------*/
void Close_PWMB(void)
{
  TBCTL&=~(MC1|MC0);
}
/*----------------------------------------------------------------------------------
函数名称:Set_PWM_FreqB
功    能:设置PWM频率
参    数:Freq--PWM频率
返回值  :无
----------------------------------------------------------------------------------*/
void Set_PWM_FreqB(unsigned int Freq)
{
  TBCCR0=(8000000/Freq)-1; 
}
/*----------------------------------------------------------------------------------
函数名称:Set_ScaleB
功    能:设置PWM占空比
参    数:PWM_N--PWM引用的引脚分布于DB7-DB1,Scale--PWM占空比
返回值  :无
----------------------------------------------------------------------------------*/
void Set_ScaleB(unsigned char PWM_N,unsigned char Scale)
{
    unsigned char temp;
    temp=0x02;
    if(temp&PWM_N)    TBCCR1=(Scale*TBCCR0)/100;    temp=temp<<1;
    if(temp&PWM_N)    TBCCR2=(Scale*TBCCR0)/100;    temp=temp<<1;
    if(temp&PWM_N)    TBCCR3=(Scale*TBCCR0)/100;    temp=temp<<1;
    if(temp&PWM_N)    TBCCR4=(Scale*TBCCR0)/100;    temp=temp<<1;
    if(temp&PWM_N)    TBCCR5=(Scale*TBCCR0)/100;    temp=temp<<1;
    if(temp&PWM_N)    TBCCR6=(Scale*TBCCR0)/100;    temp=temp<<1;
}
/*----------------------------------------------------------------------------------
函数名称:Set_OUT_Mode
功    能:设置PWM输出模式
参    数:PWM_N--PWM引用的引脚分布于DB7-DB1
返回值  :无
----------------------------------------------------------------------------------*/
void Set_OUT_Mode(unsigned char PWM_N)
{
    unsigned char temp;
    temp=0x02;
    if(temp&PWM_N) TBCCTL1|=OUTMODE1;temp=temp<<1;
    if(temp&PWM_N) TBCCTL2|=OUTMODE2;temp=temp<<1;
    if(temp&PWM_N) TBCCTL3|=OUTMODE3;temp=temp<<1;
    if(temp&PWM_N) TBCCTL4|=OUTMODE4;temp=temp<<1;
    if(temp&PWM_N) TBCCTL5|=OUTMODE5;temp=temp<<1;
    if(temp&PWM_N) TBCCTL6|=OUTMODE6;temp=temp<<1;

}
/*----------------------------------------------------------------------------------
函数名称:Setup_PWMB
功    能:启动PWM模块
参    数:无
返回值  :无
----------------------------------------------------------------------------------*/
void Setup_PWMB(unsigned char PWM_N,unsigned int Freq,unsigned char Scale)
{
  P4SEL|=PWM_N; P4DIR|=PWM_N;
  Set_PWM_FreqB(Freq);
  Set_ScaleB(PWM_N,Scale);
  Set_OUT_Mode(PWM_N);
  Open_PWMB();
}

posted on 2011-08-26 16:51 王Sir 阅读(473) 评论(0)  编辑 收藏 引用 所属分类: 单片机


只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理


<2026年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿

文章分类(4)

文章档案(4)

搜索

最新评论