找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7958|回復(fù): 2
收起左側(cè)

MSP430單片機(jī)TA定時器輸出PWM信號C語言程序

[復(fù)制鏈接]
ID:51707 發(fā)表于 2013-7-11 03:05 | 顯示全部樓層 |閱讀模式
//MSP430F149 TimerA 輸出pwm信號,注意其中寄存器設(shè)置與pwm信號輸出引腳的對應(yīng)關(guān)系,P1.2-TA1,TACCR1,TACCTL1;,P1.3-TA2, TACCR2,TACCTL2。
#include <msp430x14x.h>
#define uint unsigned int
#define uchar unsigned char
void int_clk()
{
  uchar i;
  BCSCTL1 &= ~XT2OFF;         //打開XT振蕩器
  BCSCTL2 |= SELM1+SELS;     //MCLK為8MHz,SMCLK為8MHz
  do
  {
     IFG1&=~OFIFG;         //清除振蕩錯誤標(biāo)志
     for(i=0;i<100;i++)
      _NOP();            //延時等待
   }
   while((IFG1&OFIFG)!=0); //如果標(biāo)志為1,則繼續(xù)循環(huán)等待
   IFG1&=~OFIFG;
}
void int_pwm()
{
  P1SEL |= BIT2 + BIT3 ;     //選擇 p1.2-TA1  ,P1.3-TA2  作為PWM輸出 第二功能
  P1DIR |= BIT2 + BIT3 ;
  TACCR0 = 800;    //PWM信號頻率10KHZ
  TACCR1 = 200 ;    // 占空比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);
}

回復(fù)

使用道具 舉報(bào)

ID:58503 發(fā)表于 2014-1-3 14:54 | 顯示全部樓層
沒看懂為什么把TACCR0設(shè)為800,TACCR1=200,是PWM的相關(guān)計(jì)算嗎?
回復(fù)

使用道具 舉報(bào)

ID:55510 發(fā)表于 2014-1-19 10:33 | 顯示全部樓層
學(xué)習(xí)一下、、、
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表