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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Ele_insect 于 2022-9-26 16:04 编辑
/ }' J* d2 O9 s& t# D- l0 u2 V3 D- m4 M2 {
#include <msp430x14x.h>
; t# t# r4 i: E8 ?% D& U#include - f  O/ {. F/ E4 B; h  w
#define uchar unsigned char- i. c' B1 |2 D4 s8 H
#define uint unsigned int
/ F4 B: Y9 A/ d#define CPU_F ((double) 8000000.0)//当前CPU主频
5 A7 o. F) x9 v1 n#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
6 G) V) L: H8 I#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
0 v4 h$ t! q; Y8 A0 Suint sintable[]={255,246,239,225,213,200,180,162,130,122,108,95,80,59,39,28,17,10,3,1,3,10,. i7 T/ o5 h3 z* d) M2 a) H8 [
17,28,39,59,80,95,108,122,130,162,180,200,213,225,239,246,255};
8 |" T- ~- X6 u# Y1 g5 C" Ouint t=0;+ o! v2 H9 G5 q
void Init_clk()//时钟初始化
  n5 Q9 e' i4 {: D7 r, t% U( n{
8 p2 ]4 _, d; K! _9 H! a) g' ~   uchar i;
) j! P% T' `" {9 }: i6 y   BCSCTL1 &=~XT2OFF;//(置TX2=0)使TX2有效,默认是关闭的
, n( ^  L' K/ P5 B* P, F! _! Z8 p; R7 {   do# Y# A' a, [8 ]; e# S+ h
   {7 W. u  c8 k5 O0 P5 P7 C2 p
     IFG1 &= ~OFIFG;//清振荡器失效标志" c7 H  _- Z: O0 t6 \7 s
     for(i=0xff;i>0;i--);2 ~( Q; j# c+ D8 {# [  z
   }while((IFG1 & OFIFG)!=0);     //若振荡器失效标志有效
4 w3 n! B5 o5 X# [" k5 {! W6 H8 F4 `   BCSCTL2|=SELM_2+SELS+DIVS_2;   //使MCLK=XT2=8M,SMCLK经过4分频,则SMCLK=2M
# A& t; H$ D" u% B}
; `/ g# `, s0 B+ j' Q& {/ k. pvoid main(void)( c& p2 _( }0 a% B: I* e; u
{                                             
# ]) h+ g! s$ O& \$ F7 ^  WDTCTL = WDTPW + WDTHOLD;  . M# k3 ]$ \9 i0 U. h
  Init_clk();            //时钟初始化
' O8 Z, v( y; T. P2 R+ o  P4DIR |= 0x07;         // P4.0 - P4.2 输出
2 q3 [* E) t6 R1 K4 q& O- |  P4SEL |= 0x07;         // P4.0 - P4.2 第二功能(PWM输出)
: `3 R: D6 Z5 F( S: h  TBCTL = TBSSEL_2 + MC_1; // SMCLK,增计数模式
% q' ~$ a, k) T$ I: R5 Z  TBCCTL0 |=CCIE;          //CCR0比较模式,打开中断! V# h; d- @9 Q: a. a: w
  TBCCR0 = 255;            //PWM周期
' g1 E6 b: e: s0 W& `2 G8 W5 M  O  
. q! b+ X* [4 O: G# C+ ?  TBCCTL1 = OUTMOD_7; //选择输出模式7,当TBR计数到0时,CCRx数据加载到TBCTLx中                      $ j% ^/ \: a6 O5 g, R6 |# A
  TBCCTL2 = OUTMOD_7;    $ M5 ~, m7 K- V+ ~
   
) x# \3 _9 N* T1 X1 A5 b  TBCCR1 =sintable[t];
$ S8 D9 U7 u! u3 r  TBCCR2 = 128;          //占空比128/255=50% 1 o9 o' \- L- o. P, w' l0 P
  while(1)
  S6 h4 N( x1 \: o0 A2 s  {' w7 a$ K6 R& X
   _EINT();//打开总中断
: A$ v# f# J( i0 K) P/ J1 D  }5 ]/ w( L- R% G- E* s+ k# r3 [: z
}* y6 l4 j6 x, j8 \! V1 D9 c$ s$ n
#pragma vector=tiMERB0_VECTOR( }0 M, k# x0 ]: E
__interrupt void timerB()
. Z* s5 r% u0 ^( Q{- E4 Z0 Y6 h( P* G( Z- _0 H* S
  t=(t+1)%39;
' F& ]3 t) ^' s5 ^: r  U* R) V  TBCCR1=sintable[t];//将新的抽样值装入TBCCR1
. N8 x! d; ~* ?7 Z4 X7 d* J+ [}7 o$ s6 p; r8 ]; d& s

. K* T, q/ Z& z
# X* z  p- a; s4 ^( B8 t

该用户从未签到

2#
发表于 2022-9-20 13:39 | 只看该作者
本帖最后由 名字好听吗 于 2022-9-23 21:08 编辑 + o/ }1 j6 Z2 U. `7 w5 a

) f$ j7 a8 J3 g- S& D$ c这些要,细细地看,还要分析情况,搞得跟逆向工程似的

该用户从未签到

3#
发表于 2022-9-20 14:51 | 只看该作者
本帖最后由 Crash 于 2022-9-23 21:48 编辑
1 H0 V: ?- u  _- |6 y6 L3 S) U6 J
PWM就是方波信号,时钟信号
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2026-4-18 23:43 , Processed in 0.109375 second(s), 27 queries , Gzip On.

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

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

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