EDA365电子工程师网

标题: 基于msp430g2553定时器产生pwm [打印本页]

作者: Titianyeer    时间: 2016-6-22 11:00
标题: 基于msp430g2553定时器产生pwm
#include "msp430g2553.h"! I( q2 m5 }: O" Q+ t/ m$ c
//p1.2输出50%方波,p2.1和2.4输出50%和25%波形
7 [3 ~8 p3 |- a. k# R0 e2 Dvoid main (void)
7 W% }' R! e% g0 y" v{
9 ?6 ~$ l; V2 |- K5 k  WDTCTL= WDTPW + WDTHOLD; //设置看门狗控制寄存器,关看门狗 % c; c. v# \8 a
        6 r9 f6 Z9 W  N* m2 Q5 x, o* v
  //定时器A0的
$ b9 O* j* {3 Q  TACTL = TASSEL_1 +TACLR+MC_1; // 设置定时器A控制寄存器, . D$ R# V* i' ^9 d( S, L' [- \
    // TASSEL_1选择辅助时钟ACLK,TASSEL_2选择子系统时钟SMCLK;
3 \# e5 r! z/ S4 C" B% c; K: p    // TACLR=0x0004,清除定时器A计数器 ! e/ c7 E5 U% u; B- G* n! v
  2 @+ a7 y5 h" _& D
  CCR0 =12000;  //设置捕获/比较寄存器,初始值为12000,对于12KHz的频率,周期相当于1s  
/ O/ ?  Z3 }* v% o. t5 O$ ?  CCR1=6000; //占空比50%" J( I7 b1 G/ y( T% @( T1 B
  CCTL1=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
" [2 d; b+ s* H5 o: I6 x  //增计数时相当于0到CCR1为低电平,ccr1到CCR0为高电平,$ _! D7 X/ n! h3 b8 d
  //OUTMOD_7与之相反( A( w, }+ J' n0 Q; D- u
  
5 j1 |7 c% u  X; M/ r: z  CCR2=3000; //占空比25%,错了,没有TA0.2( X, ^! U, G! F2 ^
  CCTL2=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
4 T$ E2 w) @$ P& {. [! Y. Q; K* T1 s  //增计数时相当于0到CCR1为低电平,ccr1到CCR0为高电平,
) _5 d3 ~2 `7 [. m. ?# J% c  //OUTMOD_7与之相反
; U/ e" _" u, G+ [! N* t$ J  P1SEL |=BIT2;
/ E! p* E% M6 z$ A  P1DIR |=BIT2; //输出 TA0.11 x- a. R. b6 R  V, G6 ?: m* i. O
  % T1 a1 p+ ?$ o% m
  
7 {. m# t( X1 z' j+ z6 D& n( L  + m  T- T7 q) I; \! ]$ n
  //定时器A1的5 F0 q- s4 q4 ~9 y; J% M
  TA1CTL = TASSEL_1 +TACLR+MC_1; // 设置定时器A控制寄存器, 1 J. \! J1 o  G8 F7 p, L
    // TASSEL_1选择辅助时钟ACLK,TASSEL_2选择子系统时钟SMCLK;
8 t5 q* ^8 @. ~0 K; B" f    // TACLR=0x0004,清除定时器A计数器 ; E; `- a  m$ Q# n7 q
  TA1CCR0 =12000;  //设置捕获/比较寄存器,初始值为32768,对于32768Hz的频率,周期相当于1s
7 r2 K3 j% V* Z# S  
- [$ s+ p8 \$ j# g  TA1CCR1=6000; //占空比50%: q- Z; ~3 t* _3 Q' c3 m6 N/ z5 `
  TA1CCTL1=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,9 A, O3 h" R! h
  //增计数时相当于0到CCR1为低电平,ccr1到CCR0为高电平,
+ U2 Z. D4 z, _% [6 ?  //OUTMOD_7与之相反8 n' N" U( }' ~& C; N
  TA1CCR2=3000; //占空比25%
$ s0 ~8 K( N# O% ?3 G. {7 W  TA1CCTL2=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
$ s7 b* K) e/ ~) R3 O& o; U1 I2 u  //增计数时相当于0到CCR1为低电平,ccr1到CCR0为高电平,8 m" O! Y% L& e/ P2 `, W
  //OUTMOD_7与之相反
: N) p1 P1 B1 e# ?+ K- C( l  P2DIR |=BIT1+BIT4; //输出 TA2.1和TA2.2
1 J/ B3 ~% r) x: y" E- K  P2SEL |=BIT1+BIT4; $ F6 p) c# w9 L5 A4 X$ z* `
  while(1) //无限次while循环 9 E# e- y  j1 y) m, m
  {$ i3 o, o) O5 V3 l/ C7 X, m9 W! j
     _NOP();
5 }& Z7 {! L, q9 T; d  }
+ J% b3 b) E3 h7 d6 M}
作者: Haiting32451    时间: 2016-6-23 13:42
支持一下,很不错哦!, w) Z' m$ }& @' v

作者: Hh0203    时间: 2016-6-23 14:32
真的谢了,提供这么好资料啊!
) L7 W7 j4 V1 @8 _  U8 `
作者: wzs6668    时间: 2016-6-23 14:39
学习中,谢谢分享
. K: Z2 P% [0 v, q% p; a$ I




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2