📄 pwm_timer_b.c
字号:
/********
使用TIME_B进行PWM输出
**********/
#include <MSP430x14x.h>
#include "pwm_timer_b.h"
#include "Time_A.h"
float iFre; //频率
float iScale; //占空比
void InitTimeB() //初始化
{
//TBCTL = TBSSEL_2 | TBCLR | CNTL_0 | ID_3; //时钟源为SMCLK
TBCTL = TBSSEL_2 + TBCLR;
TBCCTL1 = OUTMOD_7; //工作在复位/置位 7模式
//TBCCTL2 = OUTMOD_7;
TBCCTL3 = OUTMOD_7;
TBCCTL4 = OUTMOD_7;
TBCCTL5 = OUTMOD_7;
PWM_SEL; //选择输出端口的第二功能
PWM_OUT;
}
void SetScale(float sc) //设置占空比
{
iScale=sc;
}
void SetFre(float fre) //设置频率
{
iFre=fre;
}
//float i=0;
//float j=0;
unsigned char GoPwm(unsigned char doit) //控制PWM运行或者停止
{
if(doit==1)
{
TBCCR1=iScale; //PWM1调节加热
//TBCCR2=0;
TBCCR0=PF;
TBCTL |= MC_1; //打开定时器,计数模式1
}
//else if(doit==2)
//{
//
// TBCCR1=0.3*iFre; //PWM1调节制冷
// TBCCR2=0;
// TBCCR0=iFre;
//
// TBCTL |= MC_1;
//}
else if (doit==2)
{
P4SEL&=~BIT1;
P4DIR|=BIT1;
//j=iScale;
TimCh3 = GetMsValue(PF1*(1-iScale));
//i=TimCh3;
PWMFLAG = 1;
}
else
{
PWM_IN;
PWMFLAG = 0;
}
return 0;
}
void CtrlPwm3(unsigned char doit) //开关风扇
{
PWM3SEL;
PWM3OUT;
if(doit)
P4SET;
else
P4CLR;
}
void CtrlPwm4(unsigned char doit,float SC1) //开关电机,Sc为控制电压的占空比
{
PWM4SEL;
PWM4OUT;
if(doit)
{
TBCCR4=SC1*PF/100;
//TBCCR4=PF*0.3f;
TBCCR0=PF; //设置周期
TBCTL |= MC_1; //打开定时器,计数模式1
}
else
PWM4IN;
}
void CtrlPwm5(unsigned char doit,float SC2)
{
PWM5SEL;
PWM5OUT;
if(doit)
{
TBCCR5=SC2*PF/100;
//TBCCR5=0.3f;
TBCCR0=PF;
TBCTL|=MC_1;
}
else
PWM5IN;
}
unsigned char nAddress;
unsigned char Address() //获取地址
{
unsigned char Address=0;
CHSSEL;
CHSIN;
Address = (~READIN & 0x0F) + 'C';
return(Address);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -