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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 TaylorA 于 2020-8-26 17:40 编辑 ( h8 Z" L/ [4 h4 n
' m" G2 A* ~* A9 L# c/ c6 v, W
/****************主函数****************/, N6 F, x3 k2 e& `
void main(void)2 b5 G7 p. i0 g6 h7 ]0 G
{  2 \! h! v1 D& C( B1 l" I
    uint i;
/ A' G. g/ V& \0 n( t1 W3 k# Q
: `  L  W; e$ I/ \    /*下面六行程序关闭所有的IO口*/7 B0 c8 ~3 |& y
    P1DIR = 0XFF; P1OUT = 0XFF;1 q" B' f6 F, c( D  U9 F: b
    P2DIR = 0XFF; P2OUT = 0XFF;+ [" D: ?9 w" ?& r
    P3DIR = 0XFF; P3OUT = 0XFF;
0 ~; o" C, t7 p: N; M3 t- I    P4DIR = 0XFF; P4OUT = 0XFF;, O6 {: p( }  z8 B  y# ^: R- P7 ]/ V9 D
    P5DIR = 0XFF; P5OUT = 0XFF;
) O) U5 y' k# a. Q2 M    P6DIR = 0XFF; P6OUT = 0XFF;- |  t; C$ s, L( v5 Z/ k4 e

# `! u/ ]: F) b/ r! i5 u/ t" G' I    WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗 4 _- I1 R( C* O% i3 l' m* O9 _
    P6DIR |= BIT2; P6OUT &= ~BIT2;   //打开电平转换
) _9 c( }# R% B    P2DIR |= BIT3; P2OUT &= ~BIT3;   //电平转换方向3.3V--->5V# F. U" X% V% ~" g
    P5DIR = 0xff;
7 R- }( A) Y. `9 C0 Q; O    P5OUT = 0xff;2 f8 r& w$ C5 c$ d; d. {7 E( O/ d3 U

3 x- k# F" e& O
) p* o( s- f6 c& r* F5 P# e      /*------选择系统主时钟为8MHz-------*/
) ~( ^3 W: u& h! y9 M    BCSCTL1 &= ~XT2OFF;                 //打开XT2高频晶体振荡器5 c( }, h" Y& {: o0 K* F2 E. l
    do
. v; J, c0 x* T1 K% x% n# f+ O2 l: h    {4 i; \  [( c( _: E6 x- H/ n: Z
        IFG1 &= ~OFIFG;                 //清除晶振失败标志
* Q5 V: U# m4 a/ o1 j        for (i = 0xFF; i > 0; i--);     //等待8MHz晶体起振  m) n: u$ `( ^: q% {( I" C
    }
$ K/ p, T+ h0 _    while ((IFG1 & OFIFG));             //晶振失效标志仍然存在?/ d4 ^/ a+ B) ~6 F! S- X5 R
    BCSCTL2 |= SELM_2 + SELS;           //MCLK和SMCLK选择高频晶振, p6 Z/ L& i4 E5 L
      /*------选择系统主时钟为8MHz-------*/    % ^5 [: ^( }" J- x
4 h0 z, t& f1 H! L& L
    P3DIR |= 0X07;/ k$ c- D- R& }3 Y
    P4DIR |= 0XFF;/ m% ~, D  U& D6 e$ o6 z
    LCD_init();
( v1 t( [7 }( U) g& l# a  D: _8 Y0 x& l% e2 S
    set_pos(0,6);& u( n! K) K$ d5 d" b6 ?8 o6 |
    LCD_write_data('W');
0 O& Q& o+ X) {9 V    LCD_write_data('T');" C! R. M; ?' L! [. z. n
    LCD_write_data('F');     
4 J( A# z( I6 q, r! z& e5 m) ~! ?& C' o
    P2DIR |= BIT0;                  //设置P2.0为输出. `9 ]* n9 n3 Q0 Y
' e5 M# U; b; b, O3 T# h: R) k8 q# U
    P1SEL |= BIT2; //设置P1.2端口为功能模块使用
% G. g1 |2 {6 n( K7 F    P1DIR &=~ BIT2;  1 A1 K4 O2 P4 V% i- B4 f
    P1IFG = 0;: I5 \/ Y0 r& O: o2 d' L, U+ w
5 |% S7 s1 S  c, O
    TACTL = TASSEL1+TACLR+TAIE+MC1; //定时器A时钟信号选择SMCLK,同时设置定时器A计数模式为连续增计模式
5 W1 V. P1 [: n+ l* P    CCTL1 = MC0+SCS+CAP+CCIE; //输入上升沿捕获,CCI0A为捕获信号源
7 {) i7 |3 E' f9 X4 P1 \! M! ?! y- f  k( P* u8 ]4 q( {
) z: z/ z5 `2 K
    start = 1; 4 _9 ~7 r& G' Y* M" W! d5 [
    disp_m = 1;
3 x2 ?! M0 _; D" B    end = 1;
0 Z+ b' o) ^: H  J5 G- f    oveRFlow = 0;2 \' L! d3 b, Q
    show_falg = 0;: R  i. U7 ?6 I! w
8 f( Z8 }6 p9 n; i' e5 X  Z: k  ~
6 a1 j, J8 y6 p0 ?% |& |3 r* K
    _EINT();# Z* z( ]4 b$ K$ l3 M3 e7 E
5 F1 k& D& V9 ]" P9 h% B9 v
    while(1)
  N- D  K+ f3 r, F0 v# @3 ^   {' G8 M) D6 V: N: Z& g8 S) v

9 M( B6 ]" [7 [! F! n     P2OUT |= BIT0; 4 n' E$ h2 I1 B
     delay(160);         //给Trig一个启动脉冲; |5 o6 R0 F( s- R) Z, q5 T8 p
     P2OUT &=~ BIT0;$ b5 Q/ A  k) D6 _
& C6 y5 C) W* c; J, o
     while(show_falg); //等待 Echo的 下降沿
1 S! u. ]/ @6 k9 N. E
3 Z( P; l9 {* L' o* x* u' v% c% a     show();             //更新显示* s% A9 L' `1 _0 n) w. a2 G8 A) [

  [6 Q2 c! k, a8 S* ]3 p$ _* n
* Q3 `. o; _  |) T( y( M
8 N$ B/ p# G* E' ~: S2 t$ d   }
+ f+ ~! H& U% r: f}7 [% S! n& H8 J2 |
& @; h& b' Y8 U- R& [8 o
#pragma vector=tiMERA1_VECTOR //定时器A中断处理
2 Q9 R/ }- f. N8 `9 [# k* y  l+ f% u* |; ^( H4 K- {
__interrupt void timer_a(void)/ V- u6 |5 R7 N5 X

) @- r1 y4 o- N" M2 U; i& ^{1 Z  K( s: u7 r) m/ N0 O
- y/ B! u$ B0 |# V. W$ q  A
  switch(TAIV) //向量查询. H' r: i+ x  j6 g' N- ~# {# G
1 }( ]/ X* V; q# u/ G7 B& ]! A) I2 \% K: L
  { case 2: //捕获中断  A  ~" _% w7 y* ?7 b
    if(CCTL1&CM0) //上升沿5 R  g( L/ Y  e, P7 b6 _
    {( R. ~* C  ~  \! q/ C
      CCTL1=(CCTL1&(~CM0))|CM1; //更变设置为下降沿触发
5 u4 E; m. s; d! ]      start=TAR; //记录初始时间
) u& O, r3 B9 n8 B/ R0 P, r3 o      overflow=0; //溢出计数变量复位
! u7 F( b- }/ M. ~, k) C2 L1 x+ ], o, k: v4 G
    }& ^0 E8 V8 L, q: o  U; m& b* i  `9 I
    else if (CCTL1&CM1) //下降沿
7 y: Q, U  m- `2 F1 _2 F1 c    {
$ f6 }7 l+ \% [0 x, x# p      CCTL1=(CCTL1&(~CM1))|CM0; //更变设置为上升沿触发1 C, k+ h8 D4 p% E/ _
      end=TAR; //用start,end,overflow计算脉冲宽度
0 N" n. ]3 c6 ?; |7 F- ?      show_falg = 1;  //打开显示计算处理程序- S! ]# D& a' N. X# z! G
    }
8 P$ ]* |0 w( N! U" K- E. _. J    break;
1 k* l8 c5 j0 P% f  v: d$ g" S: @5 y7 y! i$ A, [
  case 10: //定时器溢出中断2 c: i) ~4 x, P3 [3 A0 i6 D. `2 o, B
    overflow++;
$ [5 P# _+ e1 o/ l( l9 h' R( ^    break; //溢出计数加1- q6 M/ j. ~2 P' U4 a. c# d  y( u0 t+ g
3 B4 B6 v0 e8 o6 V$ W% m
  default:break;
5 K4 F: V+ z4 _0 Y2 d. y8 u  }% ?/ X% B3 x7 L, P/ m

' a1 c% y+ Z( n% T% H4 ^. Z) I}
6 l* D) d* l3 m# b! v* L8 L3 T% s6 l! Z- C# R
  • 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-10-8 16:33 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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