找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7162|回复: 2
打印 上一主题 下一主题
收起左侧

MSP430单片机TA定时器输出PWM信号C语言程序

[复制链接]
跳转到指定楼层
楼主
ID:51707 发表于 2013-7-11 03:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//MSP430F149 TimerA 输出pwm信号,注意其中寄存器设置与pwm信号输出引脚的对应关系,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;         //清除振荡错误标志
     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 = 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);
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:58503 发表于 2014-1-3 14:54 | 只看该作者
没看懂为什么把TACCR0设为800,TACCR1=200,是PWM的相关计算吗?
回复

使用道具 举报

板凳
ID:55510 发表于 2014-1-19 10:33 | 只看该作者
学习一下、、、
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表