找回密码
 注册
关于网站域名变更的通知
查看: 233|回复: 2
打印 上一主题 下一主题

定时器产生pwm信号和实现DA功能

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-9-20 10:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 Ele_insect 于 2022-9-26 16:04 编辑
3 C, w8 a* A/ |( o# t! W1 U7 a0 n- V
& K$ P$ P7 S% s( m: _8 p#include <msp430x14x.h>* E6 J# O/ }% z6 F8 U6 X" |
#include 3 T  o7 F  [2 u2 v+ [+ {
#define uchar unsigned char
( |' A2 X8 c+ p4 c; b; E9 y5 I' G4 Y#define uint unsigned int
! o3 Y% E7 M  w" B0 F: h2 J#define CPU_F ((double) 8000000.0)//当前CPU主频 . k( c2 t( L$ [( t% I
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))$ `, C) h! j8 w* G, }" @
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
8 F- N" V7 }! e  V" M1 n3 _uint sintable[]={255,246,239,225,213,200,180,162,130,122,108,95,80,59,39,28,17,10,3,1,3,10,
) L; _$ T1 Z7 A! _; x1 c$ c17,28,39,59,80,95,108,122,130,162,180,200,213,225,239,246,255};
; ~! N2 z0 z, x4 E1 ouint t=0;
0 g! ]( A, u! j4 o/ \void Init_clk()//时钟初始化
3 O3 Y- N6 Z/ W4 x9 l: h7 j{  Y  }% S; w" R
   uchar i;* r7 W, G" h- R3 P' w7 U0 B
   BCSCTL1 &=~XT2OFF;//(置TX2=0)使TX2有效,默认是关闭的( g# z7 ^/ d- C: X
   do$ |0 U* d6 j5 |1 W* g2 g7 x
   {
& o2 E( [+ P& ]! x3 @     IFG1 &= ~OFIFG;//清振荡器失效标志, G& t0 y' d8 I2 s
     for(i=0xff;i>0;i--);
- K: G8 Y! v) t  r3 O& m8 }% r   }while((IFG1 & OFIFG)!=0);     //若振荡器失效标志有效+ f) Z7 U' z6 Y7 S7 B6 m; P0 w9 W: W
   BCSCTL2|=SELM_2+SELS+DIVS_2;   //使MCLK=XT2=8M,SMCLK经过4分频,则SMCLK=2M
  k8 i$ ]- C9 s- `! S- x! M5 t}/ |; M* N6 K% }8 E$ o0 r
void main(void)  t8 h! H4 f4 \$ W" p( f! r
{                                              ( q) T  M; _# _5 c0 x
  WDTCTL = WDTPW + WDTHOLD;  
0 l% [. G9 D& u% {! N& \9 q4 {2 D  Init_clk();            //时钟初始化
4 F0 `+ Z, U! L  u/ D  P4DIR |= 0x07;         // P4.0 - P4.2 输出9 I2 w; ]+ U8 `0 f0 P0 X
  P4SEL |= 0x07;         // P4.0 - P4.2 第二功能(PWM输出)
, x8 H4 b- T3 G; K; f8 J  TBCTL = TBSSEL_2 + MC_1; // SMCLK,增计数模式
) W- i% o$ s8 E6 y% x  TBCCTL0 |=CCIE;          //CCR0比较模式,打开中断7 @* F  Q. _' l" P! j" w' R& L% D
  TBCCR0 = 255;            //PWM周期 7 A) u- A! @8 k
  $ M5 X' h9 N) Q# ?. D  ?4 H7 n
  TBCCTL1 = OUTMOD_7; //选择输出模式7,当TBR计数到0时,CCRx数据加载到TBCTLx中                     
& k! h; b* A5 U( j" Z& x# n$ t; y2 I) r  TBCCTL2 = OUTMOD_7;   
8 s6 P( e8 w. ~. O, g3 k     w  z7 C  Z7 @3 g: Z
  TBCCR1 =sintable[t];. S8 B& n; X, ]9 N2 g. e
  TBCCR2 = 128;          //占空比128/255=50% 4 L+ t" U  o( E; w+ y+ ?9 F. q
  while(1)
& s8 T2 v. L" [0 A* h  P1 D4 @  {
$ \& i: e4 P5 ~# G' N; g   _EINT();//打开总中断
' m2 ~) A& G# L  }' K5 l7 @) F9 E3 e+ j
}
" [! U2 t; @, ]5 P2 ]1 [. q#pragma vector=tiMERB0_VECTOR
( e. q- `5 b7 ?; ^__interrupt void timerB()
! y# Z2 u, h# b% R9 ]! x! z1 f{$ X/ G2 _- v6 N. h7 a5 X$ `1 |. t  l
  t=(t+1)%39;: y- ]1 p$ N3 x2 B& d
  TBCCR1=sintable[t];//将新的抽样值装入TBCCR13 N4 q3 E# |# c7 w0 L2 X7 [0 u! f
}
2 X. q/ g% x5 ~8 A2 S9 C 8 e3 R% @* Z+ g& ?

% V1 q# r; l; {5 o7 r6 l* h

该用户从未签到

2#
发表于 2022-9-20 13:39 | 只看该作者
本帖最后由 名字好听吗 于 2022-9-23 21:08 编辑
9 k: \! C* y# d  N
; P/ W: N$ K3 e7 p" `4 R这些要,细细地看,还要分析情况,搞得跟逆向工程似的

该用户从未签到

3#
发表于 2022-9-20 14:51 | 只看该作者
本帖最后由 Crash 于 2022-9-23 21:48 编辑
1 ?1 q5 c0 {/ a  X! c- j- f) i4 }. `6 f9 ]* H; i5 l* y' d: K
PWM就是方波信号,时钟信号
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-3 09:16 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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