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

MSP430F149 关于 脉冲捕捉 一直不进入沿中断 求各位大佬 指教

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-8-26 17:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
本帖最后由 TaylorA 于 2020-8-26 17:40 编辑
4 C7 R5 @% t' O; q
( `; E! r# v) x0 |3 [/****************主函数****************/
0 E" |8 P& C" v1 ~( h; B6 h% r" \void main(void)7 |  z$ d4 g: P. a$ I
{  
. u# n+ B2 s' Z. |7 _: q& v    uint i;2 Y  m. O: L9 E% l6 G

" h" i( z- r, a7 r" b% L* k    /*下面六行程序关闭所有的IO口*/
1 {; [6 c2 h1 p- w    P1DIR = 0XFF; P1OUT = 0XFF;+ @$ }$ J; }% u, }9 b- [' a. d
    P2DIR = 0XFF; P2OUT = 0XFF;0 F  c) j" H" ~2 g' Z! s
    P3DIR = 0XFF; P3OUT = 0XFF;; l3 D: ]$ L0 ~0 ^
    P4DIR = 0XFF; P4OUT = 0XFF;6 P6 m: h& Y* p6 j2 m
    P5DIR = 0XFF; P5OUT = 0XFF;+ I) k. D( H- l2 a
    P6DIR = 0XFF; P6OUT = 0XFF;: ^! L( W- Y( h' F

5 X/ X) b7 F9 T1 _9 s# b) I$ u    WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗
2 O8 E4 Y5 P+ H$ F0 @7 b$ F* v" D. V, V    P6DIR |= BIT2; P6OUT &= ~BIT2;   //打开电平转换
1 |9 K, d* k: {% d    P2DIR |= BIT3; P2OUT &= ~BIT3;   //电平转换方向3.3V--->5V
1 N( T$ L% \8 N5 F    P5DIR = 0xff;$ a9 S% \) _7 S5 B# w4 t
    P5OUT = 0xff;: _9 u7 J" \( q( {! n+ X

0 |& s. \+ t' y1 Y$ Z6 z: L6 l
' w# z! s2 F  s, ^+ V) D' z      /*------选择系统主时钟为8MHz-------*/1 z3 [9 w+ u- u% X2 I; H0 u& b# p
    BCSCTL1 &= ~XT2OFF;                 //打开XT2高频晶体振荡器$ B) f- Z3 k  }% K1 C6 B
    do, h# {3 O8 N+ g9 w- }' ^
    {7 M2 \- L  S" h1 |, s' V
        IFG1 &= ~OFIFG;                 //清除晶振失败标志
! ^7 k( k6 p* V        for (i = 0xFF; i > 0; i--);     //等待8MHz晶体起振
( [" d4 n( o7 {1 U& a    }8 v7 ?+ a+ i& A2 A' F4 c
    while ((IFG1 & OFIFG));             //晶振失效标志仍然存在?
/ T& {/ M) N7 C5 J2 W    BCSCTL2 |= SELM_2 + SELS;           //MCLK和SMCLK选择高频晶振
. l/ K, w6 i& ]+ N      /*------选择系统主时钟为8MHz-------*/   
) n- g( T+ z. @, c2 v
! b- V5 W# t! ^3 _, u- k    P3DIR |= 0X07;. w8 L4 G' Q' A! H
    P4DIR |= 0XFF;
" |$ T7 T4 l8 N0 L' M8 u    LCD_init();
8 w+ {* A$ t/ M5 f. S1 S( S
0 E& ~/ J, S3 _    set_pos(0,6);
# V2 ]3 H$ x! o* _* ^    LCD_write_data('W');9 A. q! ^' L) ?
    LCD_write_data('T');
1 X, A3 [. i+ ?4 l- ~! r* Z, Y    LCD_write_data('F');     8 c! m' w8 W; u( g4 t( t

& I3 v* J) F: H$ J) c) u    P2DIR |= BIT0;                  //设置P2.0为输出
/ S/ ~; [/ E% e2 x7 \3 s$ Z
# s, q7 N7 I  x9 Y, {    P1SEL |= BIT2; //设置P1.2端口为功能模块使用2 R& {+ S+ q7 p" s
    P1DIR &=~ BIT2;  # Y' {! f. J' P+ E
    P1IFG = 0;
( ~& h2 ], s# ^0 m* |' ~) L/ N
5 r8 A. d1 d$ B+ `    TACTL = TASSEL1+TACLR+TAIE+MC1; //定时器A时钟信号选择SMCLK,同时设置定时器A计数模式为连续增计模式
$ n8 P3 v( A( D# k  ^0 E4 o% r    CCTL1 = MC0+SCS+CAP+CCIE; //输入上升沿捕获,CCI0A为捕获信号源
9 L( f' `& C; I$ k( P& e! G1 g' u& ?1 L# w  C: Z$ M9 r& D1 j8 _- P

8 a6 k% B: p. z# _9 e    start = 1; 9 s% j% q& s7 z1 P
    disp_m = 1;
" i+ n% b5 [7 ]* |$ f    end = 1;
8 f- p8 Q2 S4 K2 A    oveRFlow = 0;7 S( R; V$ T9 q- Y- D5 y1 P8 R6 ~
    show_falg = 0;5 a5 t2 ~: p, B$ X

0 T  _/ T- d/ [2 c- S' `( A; V+ y# E+ ~/ Z. X  U9 @+ s
    _EINT();! [+ t  e; |7 _+ t0 U5 t
1 j+ O8 L, ~+ I9 M( [- \( {
    while(1)* s: X$ `$ ]7 {/ A
   {% A2 s0 w; b$ K* n) M
9 C3 A9 Q% \6 h' \! L. ~
     P2OUT |= BIT0; ( P7 r/ V% h8 s' w# {6 A
     delay(160);         //给Trig一个启动脉冲
# e3 b0 p2 G- l. T     P2OUT &=~ BIT0;' c  p" A7 f' b

8 \- u, j0 b( `, U) h     while(show_falg); //等待 Echo的 下降沿( D; D2 R: p- B
: U( F/ g9 ^' O
     show();             //更新显示& I$ u/ S0 \" O" U- [4 E6 D5 Z
5 a7 W: E4 g! u8 p, a' ?4 I& D
, g2 r. r6 I) `8 j/ p  @
7 p# m& p; ?$ V0 H2 g
   }
6 J0 ]5 _' M3 ^* `' a# G4 d}
/ o4 V' |, `  s: H1 Z
7 w6 V; B4 {$ {; F( l#pragma vector=tiMERA1_VECTOR //定时器A中断处理9 Y" X& I& Q. Y

8 \5 N  V, L. d, s$ H3 H0 C- L, j__interrupt void timer_a(void)
% k( p8 n8 v* O4 u) ?+ \! m* [$ l8 _6 d; _/ s5 g# n- q
{
& E; ], Q& W0 y( r' h
5 I1 `4 S  B$ J2 R3 C* d; I& S. v  switch(TAIV) //向量查询+ ~! L8 e4 U6 G$ i6 c; T
1 ~+ p: L6 {3 A3 |) ]. r
  { case 2: //捕获中断
2 Z' \1 \# E1 I& _    if(CCTL1&CM0) //上升沿# f3 [0 `) y7 K3 x+ M/ L$ K: ^
    {
' ?  @. k9 l+ _+ W+ T6 C0 t# a8 g  Q      CCTL1=(CCTL1&(~CM0))|CM1; //更变设置为下降沿触发
! ~8 }8 j/ Y+ [* c* c      start=TAR; //记录初始时间. a$ i$ N8 w9 M. p* D& A
      overflow=0; //溢出计数变量复位5 ?( [4 ^" @3 |7 N4 z+ R

( U1 l1 g4 `8 U, G    }
; A% p; k9 t" e, W! X    else if (CCTL1&CM1) //下降沿. W' C' ~3 ]0 H4 f
    {
- y1 v  d8 e) M0 y3 H% _/ v      CCTL1=(CCTL1&(~CM1))|CM0; //更变设置为上升沿触发2 J1 n1 m: ]/ K' L; `) C
      end=TAR; //用start,end,overflow计算脉冲宽度
0 U, e' p# r2 Q; P      show_falg = 1;  //打开显示计算处理程序
7 X5 c( Z$ S4 @8 V    }6 k) W, \: q) Y: e
    break;& o' u* S8 m- {% x7 T2 a& K8 y9 J& q

# }% L7 S. L) A  case 10: //定时器溢出中断
# K- ^# t! L: k' g    overflow++;
: p) J& e8 b0 B% L, s' O0 p    break; //溢出计数加1  V0 ^6 F" C, l
' R# {1 {6 w; a5 x$ S2 h" Z  b( s" L7 q
  default:break;& y" C7 I/ `- x
  }
$ o' I; K+ R! n' o0 ~, d
7 [' `0 Z+ ]9 `0 A0 \6 P2 B( n7 U}
$ \+ ~" _6 b1 U! c1 d3 X6 Z+ o, Q4 D# b# S3 ]
  • TA的每日心情
    开心
    2023-6-2 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-8-26 18:29 | 只看该作者
    ??                           

    该用户从未签到

    3#
    发表于 2020-8-27 09:46 | 只看该作者
    复杂                                         
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-26 11:38 , Processed in 0.093750 second(s), 23 queries , Gzip On.

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

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

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