急求????MSP430F149为何使用8M的晶振,却分频得不到2M,4M的PWM波呢 5
使用程序如下voidint_clk(){uchari;BCSCTL1&=~XT2OFF;//打开XT振荡器BCSCTL2|=SELS;//MCLK为8Mhz,SMCLK为...
使用程序如下
void int_clk()
{
uchar i;
BCSCTL1&=~XT2OFF; //打开XT振荡器
BCSCTL2|=SELS; //MCLK为8Mhz,SMCLK为8Mhz
do
{
IFG1=~OFIFG; //清除振荡错误标志
for(i=0;i<100;i++)
_NOP(); //延时
}
while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待
IFG1&=~OFIFG;
}
void int_pwm()
{
P1SEL|=BIT2+BIT3; //选择P1.2-TA1,P1.3-TA2 为PWm输出 第二功能
P1DIR|=BIT2+BIT3;
TACCR0=800; //PWM信号频率10Khz
TACCR1=400; //占空比1:1
TACCTL1=OUTMOD_7;
TACCR2=400;
TACCTL2=OUTMOD_7;
TACTL|=TASSEL1+ID1+ID0+MC0; //选择SMCLK增加模式
}
void main()
{
WDTCTL=WDTPW+WDTHOLD;
int_clk();
int_pwm();
while(1);
}
为何就是得不到M级的pwm波呢,除此之外,如看比人说的使用DCOCTL修改DCO的时候出现未定义的情况,求各位大神指导 展开
void int_clk()
{
uchar i;
BCSCTL1&=~XT2OFF; //打开XT振荡器
BCSCTL2|=SELS; //MCLK为8Mhz,SMCLK为8Mhz
do
{
IFG1=~OFIFG; //清除振荡错误标志
for(i=0;i<100;i++)
_NOP(); //延时
}
while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待
IFG1&=~OFIFG;
}
void int_pwm()
{
P1SEL|=BIT2+BIT3; //选择P1.2-TA1,P1.3-TA2 为PWm输出 第二功能
P1DIR|=BIT2+BIT3;
TACCR0=800; //PWM信号频率10Khz
TACCR1=400; //占空比1:1
TACCTL1=OUTMOD_7;
TACCR2=400;
TACCTL2=OUTMOD_7;
TACTL|=TASSEL1+ID1+ID0+MC0; //选择SMCLK增加模式
}
void main()
{
WDTCTL=WDTPW+WDTHOLD;
int_clk();
int_pwm();
while(1);
}
为何就是得不到M级的pwm波呢,除此之外,如看比人说的使用DCOCTL修改DCO的时候出现未定义的情况,求各位大神指导 展开
2个回答
展开全部
TACCR0=800; //PWM信号频率10Khz
TACCR1=400; //占空比1:1
改为
TACCR0=3; //PWM信号频率2Mhz
TACCR1=2; //占空比1:1
TACCR0=1; //PWM信号频率4Mhz
TACCR1=1; //占空比1:1
应该就是了,我没试过会出现什么情况
使用DCOCTL修改DCO的时候出现未定义的情况,肯定就是你寄存器符号写的不对呗
TACCR1=400; //占空比1:1
改为
TACCR0=3; //PWM信号频率2Mhz
TACCR1=2; //占空比1:1
TACCR0=1; //PWM信号频率4Mhz
TACCR1=1; //占空比1:1
应该就是了,我没试过会出现什么情况
使用DCOCTL修改DCO的时候出现未定义的情况,肯定就是你寄存器符号写的不对呗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询