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 D
void 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.1
1 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