TI中文支持网
TI专业的中文技术问题搜集分享网站

利用430F169控制pwm输出脉冲的个数

#include <msp430x16x.h>
#define CPU_F ((double)8000000)
#define delay_us(x)__delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x)__delay_cycles((long)(CPU_F*(double)x/1000.0))
void main()
{
WDTCTL = WDTPW + WDTHOLD; //停止看门狗WDT,不使用内部看门狗定时器。
P1DIR |= 0x01; //设置P1.0口方向为输出。
CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1,CCR0捕获/比较功能中断为允许。
TACCR0 = 110; //捕获/比较控制寄存器CCR0初值为110。
TACTL = TASSEL_1 + MC_2; //设置定时器A控制寄存器TACTL,使时钟源选择为CLK辅助时钟。
_BIS_SR(LPM0_bits + GIE); //进入低功耗模式LPM0和开中断
}

//定时器A 中断服务程序区

#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^= 0x01; //P1.0取反输出
TACCR0 += 110; //重新载入CCR0捕获/比较数据寄存器数据
//delay_ms(1000);
}    

  如何控制它输出3200个脉冲????????

Ken Wang:

minzhi,

你这里指的脉冲数是指在P1.0端口上的输出吗?你贴出来的这个程序是定时器匹配计数中断的例程,它每记110个clock会产生一次中断,然后翻转一下P1.0的电平。

如果你要在P1.0上输出3200个脉冲的话,你可以在中断里面计数。如果是要在管脚上面产生PWM波的话,你可以用定时器的PWM模式。

谢谢

minzhi guo:

回复 Ken Wang:

我要在P1.0上计数3200个脉冲  ,在中断里怎么计数?可以帮我写一下例程吗?

Ken Wang:

回复 minzhi guo:

minzhi,

设置一个全局变量,然后在中断程序里面计数,当达到3200时,把中断disable掉或是设置一个断点看下。

多动手试试!!

xiexie

赞(0)
未经允许不得转载:TI中文支持网 » 利用430F169控制pwm输出脉冲的个数
分享到: 更多 (0)