#include <msp430x14x.h>
typedef unsigned int uint;
typedef unsigned char uchar;
#define PWM BIT2
void int_clk()
{
uchar i;
BCSCTL1&=~XT2OFF; //翻开XT振动器
BCSCTL2|=SELM1+SELS;//MCLK 8M and SMCLK 1M
do
{
IFG1 &= ~OFIFG; //铲除振动过错标志
for(i = 0; i < 100; i++)
_NOP(); //延时等候
}
while ((IFG1 & OFIFG) != 0); //假如标志为1持续循环等候
IFG1&=~OFIFG;
}
void int_pwm()
{
P1SEL|=PWM;//挑选P12作为PWM输出
P1DIR|=PWM;
TACCR0=800;//PWM信号周期10KHz
TACCR1=400;//占空比1:1
TACCTL1=OUTMOD0+OUTMOD1+OUTMOD2; //输出形式挑选
TACTL|=TASSEL1+MC0;
}
void main()
{
WDTCTL=WDTPW+WDTHOLD;//关看门狗
int_clk(); //初始化时钟
int_pwm(); //初始化PWM
while(1);//完毕
}
本例程是以msp430f149单片机的PWM操控步进电机的滚动,以P1.2口为PWM输出端口,PWM信号周期为10KHZ,占空比为1:1。