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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 TaylorA 于 2020-8-26 17:40 编辑
% X  Y! T  M5 O' `: y& E  X  I8 X7 M9 y  p! d% n0 J
/****************主函数****************/: a8 ^: f& U* e
void main(void)
+ s) w9 z3 F9 w* P, T{  ; H. l5 x7 X: z, j
    uint i;9 Z% P/ _: A" N* X$ G% F
* ~, N) S: f  R% ^# e
    /*下面六行程序关闭所有的IO口*/" x8 Z, O9 J3 M( C/ a
    P1DIR = 0XFF; P1OUT = 0XFF;
6 b. |3 g& o# D% F' z5 r    P2DIR = 0XFF; P2OUT = 0XFF;
% t. p, C; w$ ?7 D    P3DIR = 0XFF; P3OUT = 0XFF;4 |4 f1 m( W& P$ y# a
    P4DIR = 0XFF; P4OUT = 0XFF;! r0 [. L8 T5 Q
    P5DIR = 0XFF; P5OUT = 0XFF;
& W$ I( ^) ~' m- u8 E. N2 P    P6DIR = 0XFF; P6OUT = 0XFF;; ~% u6 u, u" A* X! `1 o
; c. |# _3 p! y4 U% d1 M. C
    WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗
  p3 H4 T4 e$ E    P6DIR |= BIT2; P6OUT &= ~BIT2;   //打开电平转换# ^3 c2 }4 N. I" q
    P2DIR |= BIT3; P2OUT &= ~BIT3;   //电平转换方向3.3V--->5V: |" q' w/ W, u. i  ]4 n7 S6 N
    P5DIR = 0xff;4 @+ z3 a) d0 e( o$ E) |4 j! P
    P5OUT = 0xff;* k- A$ C% [* E/ r

# x4 x  d+ j1 ~3 c
& q) K0 P: b; u7 E2 S      /*------选择系统主时钟为8MHz-------*/
; f  u0 x9 [5 [$ u# O' c; N    BCSCTL1 &= ~XT2OFF;                 //打开XT2高频晶体振荡器
/ Y- G7 a/ f5 p# T5 U    do
/ A$ }' Z3 w$ E- O    {' j& f& N2 A# y+ k' j2 u
        IFG1 &= ~OFIFG;                 //清除晶振失败标志. Q- y; q# m' a; H9 u; s, u
        for (i = 0xFF; i > 0; i--);     //等待8MHz晶体起振, f& h, U$ E* d! h: k
    }
/ x' w( |: q, q3 \: B    while ((IFG1 & OFIFG));             //晶振失效标志仍然存在?
- i" ~# Q% r/ K' D( T6 u+ ]    BCSCTL2 |= SELM_2 + SELS;           //MCLK和SMCLK选择高频晶振
9 ^( F* T8 }. n+ E$ N      /*------选择系统主时钟为8MHz-------*/    , I* ?! [9 c& H& s1 M+ L
/ u; O8 I0 |- b! q
    P3DIR |= 0X07;* ~# Y3 g/ o3 m  D
    P4DIR |= 0XFF;
7 y5 ]: J, F! `9 j- l9 j& s/ G    LCD_init();
+ K6 u- D: z/ ~' U& [+ W
# b$ D* |9 Z. K) l3 u9 ^0 `) R    set_pos(0,6);
+ p6 ^) N3 p/ [, W& z    LCD_write_data('W');7 `1 O. a6 Q1 Q8 t8 e# N
    LCD_write_data('T');+ e6 ^" |" _' I: }
    LCD_write_data('F');     
! ?$ N8 U6 z7 |7 k, R4 Z
. ~+ I$ m8 j; |6 b) h9 I    P2DIR |= BIT0;                  //设置P2.0为输出0 h% W# V0 F' \$ U- p8 E
& ]% I4 o! R( Y  E8 {! k
    P1SEL |= BIT2; //设置P1.2端口为功能模块使用  W; O) \8 f. x. s+ a
    P1DIR &=~ BIT2;  9 z$ z) J/ a' p& V
    P1IFG = 0;
! m7 K; h7 H, H% n# L/ C7 Z
/ y( `5 a) n, g6 U: l4 z    TACTL = TASSEL1+TACLR+TAIE+MC1; //定时器A时钟信号选择SMCLK,同时设置定时器A计数模式为连续增计模式5 `+ h5 |- _+ ^+ _1 k
    CCTL1 = MC0+SCS+CAP+CCIE; //输入上升沿捕获,CCI0A为捕获信号源/ Z' e/ N! `% H' R$ [" m( r* }# k
3 d/ P6 M& b# v. {3 K' B! R

' e# |( ~$ R' v2 }' Q% ]" l    start = 1;
! e, N: v/ P3 ]* F; P- u% H    disp_m = 1;, u5 r( ?$ n  j2 l
    end = 1;
6 d+ I: `- y5 X  s; H    oveRFlow = 0;
" j9 P1 t4 u, ]0 X2 a    show_falg = 0;
- [5 C7 p- J5 I  C, W
9 A* D+ J& E& e& x5 B/ ~: F6 W. m  W' d8 D4 x
    _EINT();
* H+ N& G) r6 \9 _9 n# B; G. K8 W3 T# \9 D
    while(1)
7 V7 V3 |9 ~$ Q( v. |   {, n1 Y7 b' T. ?; ^( \

, a. z  C1 G% ]% I     P2OUT |= BIT0; ; f  I% L" H( n$ |& S6 S
     delay(160);         //给Trig一个启动脉冲
1 [7 K& ?/ G" g- z9 x- x" e1 K. p; _     P2OUT &=~ BIT0;
0 O4 X9 n2 ?$ I9 P: F2 G
) \: z$ G5 ^9 `" l  m% |2 C- `     while(show_falg); //等待 Echo的 下降沿
* ]# X0 `) \$ T. V
7 Z/ F; t# ~2 N8 [     show();             //更新显示
+ L( S$ O$ M! S" i
' ?8 d9 l, o1 J0 t6 N2 r! P( h2 S
: l6 w% |, A2 s* Y+ c0 O5 p' F8 B
   }
$ _2 ]. p1 s# r, g7 N. I- Q}+ `- ^( N: X$ |

8 m# V; P& a' d3 A+ v. _#pragma vector=tiMERA1_VECTOR //定时器A中断处理: j) L1 W4 |, B( y4 G

* e! R, h1 V$ D3 k3 p# V/ v__interrupt void timer_a(void)
2 c4 c7 l" e( D! _: `  [5 u' o- a9 t+ F
{
  D6 l0 M4 o% z: K" @& o( S' V% E5 Y7 O4 q: `
  switch(TAIV) //向量查询  `  W( c7 d1 a3 h0 |3 {1 D
4 D+ p# g/ F( [, d; K6 {/ ^
  { case 2: //捕获中断* K/ R$ m2 ~+ P5 E0 V+ d' h/ J3 ?
    if(CCTL1&CM0) //上升沿7 z( s; F1 V" U6 s  g
    {6 U# D# O  X6 E6 A
      CCTL1=(CCTL1&(~CM0))|CM1; //更变设置为下降沿触发% z3 m5 `' a# D# C+ b
      start=TAR; //记录初始时间0 K# F% H9 I2 u$ m
      overflow=0; //溢出计数变量复位
  J& U* i. @; j! }* [: L: u9 o7 O/ r6 V* G; t2 h5 |0 b5 G7 s
    }
4 ?& B$ D2 g) f, c1 b! d    else if (CCTL1&CM1) //下降沿
. H$ s& W, G# W, b9 w/ e5 u    {
) L- [: M0 c5 e, E; ]      CCTL1=(CCTL1&(~CM1))|CM0; //更变设置为上升沿触发1 N* J* ?0 L5 w7 M9 q6 `: |
      end=TAR; //用start,end,overflow计算脉冲宽度
% G% |0 }' ~3 ^, n" D3 a. ^4 l  t      show_falg = 1;  //打开显示计算处理程序
; Z& f5 k! I4 g2 Q/ n2 Y; i2 a    }
$ L' W3 t3 V1 ?4 d9 B; P; q. Y    break;# {9 i) D8 U; k

6 ]! p7 S/ n' `8 a. }# F9 A  case 10: //定时器溢出中断7 t; j" e1 w/ F( v9 H4 e) o$ G
    overflow++;9 M$ g4 U0 ]6 i
    break; //溢出计数加1
. h9 s. {4 `( o" z0 P# Q+ O0 J- {' |% C1 D
  default:break;
5 u' Z: S1 K( z, S6 A& [2 |3 e  }8 F/ J& z/ e$ L5 `/ P

1 W# E& _+ y& o) r}
* L& V2 n7 ~1 ]1 b4 O, u7 x* [2 M" [
  • 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-11-25 01:56 , Processed in 0.171875 second(s), 23 queries , Gzip On.

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

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

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