EDA365电子论坛网

标题: 大家好,请教大神关于430看门狗的使用问题 [打印本页]

作者: StepPeng33    时间: 2020-8-10 13:51
标题: 大家好,请教大神关于430看门狗的使用问题
想通过程序实现闪烁功能,不使用看门狗程序很容易就跑死了,现在还不明白看门狗怎么使用,请大家能够指点
9 U3 H( i9 |& F) o/ X#include "msp430x14x.h"- f' L( G  w7 N7 T0 d7 N& F4 {
#define UINT8 unsigned char) I. E  m4 N4 m. o8 a/ R
#define UINT16 unsigned int9 H/ {$ T% C7 N
#define False 0" P; f- N/ X0 Y6 P" K+ G
#define True 1
5 |2 G0 @% o0 |
' P3 s" X1 v! J, Q* m1 KUINT16 timer_Counter = 0;
+ e: U' \+ F  LUINT8  Timer_Flag = False;. q: `( n0 s( a3 M9 f9 x
UINT8  Light_Start = False;! I; B; ~# c& b, v
UINT8  Fun_Choose = False;
. G* b5 p. C/ Q. F. T1 s2 H6 I! d" b% M& q; V. _  E3 \
/***********时钟初始化函数***********/
9 B. i% }4 A7 f4 gvoid clk_init()$ R3 m9 W$ W( |6 j2 C
{. N' \0 _7 J+ P0 S1 B
  UINT8 i;
! j* t1 P+ v! y  BCSCTL1&=~XT2OFF; //打开高频晶体振荡器
8 F( s) \* S3 r1 ?5 O" Q  BCSCTL2|=SELM_2+SELS; //MCLK和SMCLK都选择XT2,8MHZ
# L: P$ v2 |" Q% i2 T; O, a( _6 M8 P    do
6 ]: c1 Y( B2 |( a% I# s5 v8 Z( h) x    {! R, _* ~- @; r  h
      IFG1&=~OFIFG;   //清除振荡器失效标志2 I5 |  W( }2 S4 n5 L/ m7 F
      for(i=0xff;i>0;i--);  //延迟待稳定- i- j9 q; p: Z! u
      
% i# f9 R! r( k$ J; J6 r& Q( o; I    }
3 b0 `2 ]) j& y% L0 j" j   while((IFG1&OFIFG)!=0);# j1 k3 i; U+ c: B: n+ N
}   
, [# o  D7 Q4 b3 B: |& ~" k* ?   + y% V; w- U& r- Z: ~4 t. a
void GPIO_Init()
4 J/ j# z8 f$ S. X( u{
6 A& b1 B0 C/ C. _+ B) @) F  P1DIR &= ~BIT5;
0 L/ w4 I) V$ ]* W% V! b$ p* W. n  P1OUT |= 0xFF;
  i1 N3 P  ^. H; T  P2DIR |= BIT6;) ~7 i2 c# P4 O: P9 p  O
  P2OUT &= 0x00;# P2 o7 }" o6 x, s( h
  3 k6 g3 Y# ]9 ^( ~. V# B
  P5DIR |= BIT4;9 m/ `6 @2 H7 F& d
  P5OUT &= ~BIT4;  
# _: s# I; ?+ K( i' g: E}0 Y6 G( _7 s' a& s
/*****************TimerA_Init*******************/
' t# V6 v3 b6 o' w, h' tvoid TimerA_Init(); D) p+ s  N6 l
{
0 A7 u7 M6 u. w# c  TACTL|=TASSEL_2+MC0+TACLR+TAIE+ID_3;9 k6 O  g' h9 h4 i; e' u
  CCTL0 = CCIE; ; c4 F' T3 `" V$ O- S) p! ^
  TACCR0=29999;
, q) E6 S& [" N0 n' p. o}
+ L! ^9 W; {. l2 I* k: K//******************************************************
: @3 r7 E4 T) J, U' z, R! c# N//352微秒延时程序
2 c$ T/ M% s* x% n' M1 qvoid delay_352us(UINT16 i)//352us延时程序" L+ w2 v: E1 P. Y" h: _) V7 [
{
: ^4 _9 y4 J5 V9 i9 W. w2 w  UINT8 j;7 E& v0 Y' c; v5 {/ {, B4 d& P
  while(i--)5 t! ]) G. T% ~9 W* m& G! X. J$ j1 A
  {
  c5 d2 S; R/ I6 ^+ I5 V5 ~4 \& i   for(j=0;j<255;j++)
" L/ g$ q3 [! G+ k  J) y   {  
% C, R/ A! @$ P& j5 \: d    _NOP();
* P: e  k% R7 J    _NOP();- b5 X# |) W  |6 C# G4 ?! `
    _NOP();
1 }  M  N" ?  o3 _2 e! _% U  d    _NOP();   
; |: F2 w9 y0 M    }8 b& T2 Q6 _8 [/ a+ h8 ]* s
  } 6 B& p' q4 o" ~  i* h' V! \
}
/ ^! s% s8 t+ ~( p- B# G5 s
3 ]" ~- g4 J1 z0 V) S! }/************************************************/; ^* p; Q' o$ |7 a# z: \' h
/*                   主函数                     */3 n( E5 ]4 a( H5 U# t
/************************************************/
% q# R) A: o! m& Tvoid main(void)' a, v" @. u+ C! S* i

+ Q4 \3 G, f; \4 Z( f{
& F1 K8 o7 e# o2 |' v* T0 ]1 z7 W( B4 }
//  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
% j6 H1 ~4 X$ x$ S6 Q2 B; i- f, l3 i
    WDTCTL = WDTPW + WDTCNTCL;
" T5 p  t! Q5 i; p, {; X
) k3 k, f  u% C" F3 @% k9 ~    P5DIR |= BIT4;                            // Set P5.4 to output direction
6 a8 u+ u- {& Y0 E2 B' p    P5OUT ^= BIT4;
1 |; F; j. V; a8 h$ V9 j" t: v) W7 i    clk_init();( p; d* ~# E# G
  1 _$ M9 N2 j7 c1 K
    GPIO_Init();
1 T- u2 f# r) O( `   
, k1 X6 e: B/ F7 N; W    TimerA_Init();
0 e; W) o& w) r* `7 W$ P* I( m
! j$ \9 c: Q7 b: R" }3 H! ]9 @; L, T    _EINT();
+ V0 ~, Q4 X5 `7 d, w) v7 s  b    LPM0;                       
4 t, m+ s: @1 `5 G  a    WDTCTL = WDTPW + WDTCNTCL;
: `% v* `- @& }" t3 u0 ?" |! m% X9 T9 r: }

8 m# W1 [: V  |: _1 o( w' Y* G& V3 V
}, w$ Q7 ]6 j/ C' k% k

* F' H' N8 A$ g, Z  C2 |2 T) B4 M/************定时器A中断函数******************/* X" D' w% n5 e% m# V  b
#pragma vector=TIMERA0_VECTOR; N- L( {. u9 s& Y  V7 I* z% y
__interrupt void timer0()
# N: u1 \& V1 x0 [# K) S{# {! t# q+ [0 G2 M
   switch(TAIV)  ?# G0 b; t  S, p+ E
   {* }  W( l1 f$ q) r$ j4 E+ |% c3 W
     case TAIV_TACCR1:break;' i% e8 ?3 G: S- B9 T
     case TAIV_TACCR2:break;
" t7 ^0 Y7 c( L9 s7 F. h     case TAIV_TAIFG:2 a8 s3 }8 P6 P6 B5 W: @* R
     { 0 {# _" P6 E, e' W; p; }
       Timer_Counter++;" G5 @3 @# ]) C; N* L  J
       if(((P1IN & BIT5)>>5) == 1): l; j: y) `  \
       {
3 `6 o0 n* G. f3 y- f           Fun_Choose = False;  1 ]9 h& M- U5 r: n! S$ y5 t
       }
+ L- I4 f3 C8 S       else
; ]) i4 S9 V& @! Y+ m       {         
1 Q! c, f$ D, {1 C' A           Fun_Choose = True;
* y/ D9 i5 }& c       }
; L# B; J" U# H       / q: U% X* Q0 }& T% q
      
$ |' s7 M7 p/ u* A/ [: K       if(Fun_Choose == True)
' R3 f2 E7 h2 p  B7 I! n, t       {' ~  c) k( d# O  C3 c" C! m5 M
         if(Timer_Counter >= 11)
; m5 t# S# L2 j3 i) {            
% I+ w9 e4 e. i, a% m         {- B% L: l7 E0 ^' ?. I
         ! r) l. w- y7 F+ a6 u- F. p, q
            Timer_Flag = 0;
  b9 N9 _! a% k8 i           - z; J9 `! a2 u- M% F; O7 E
         }5 q7 K  H; _; P( U" B
         if(Timer_Counter >= 33)- U/ |4 G8 X! V  p0 T
            {1 h, l8 \2 N5 z8 Y' v( O
              Timer_Counter = 0;
' }0 H5 x+ E: X- V, E% R+ h2 u' E              Timer_Flag = 1;
$ m4 g& N% C6 t% k  E6 Z# |            }  
- t* S( v: Z6 R3 B: O( {! Y7 K         if(Timer_Flag == True)
% H+ b; s4 t5 K- R& E. q+ p. @         {
  m! m7 ^1 \; a' x8 e( g           P2OUT |= BIT6;+ A6 O4 o6 y  b2 i6 _+ h
           P5OUT |= BIT4;3 U6 c- @8 D( V2 v
         }8 q- t% S, N' l" ^/ a1 G: E4 m
         else
& h7 S: S4 j3 |$ h         {6 C5 c1 q" ~5 a1 Y. N1 J
           P2OUT &= ~BIT6;
: o# r2 V2 L8 y. P" u+ ^$ g           P5OUT &= ~BIT4;
9 Y% J$ x: o* X0 I- p% v         }   ?" n* a3 [9 a  R! }2 g
       }
: |( y5 F; u0 T3 t5 ]/ q% }7 @; i       else) h: @8 @: V2 y7 l' W4 ~' S% D
       {
" [" w* `, I# M0 c5 X8 R( l& ]2 o         P5OUT |= BIT4;( h2 P% g) y& O5 E
         P2OUT |= BIT6;
1 n7 L* m7 ]9 E6 r) x7 w# k# K       }   
, G* ~6 L' o, q8 _# K# ~9 C& k     }# Y0 I, Y" V, |( v4 L7 a2 i% m5 B0 _
     break;
# e, p: ^2 I5 ~9 o. t: X9 H9 J   }
: H' e8 Q) a+ s}
; c( I( P  m- O5 Y) I1 r, j0 c* N# l8 S( D# e, B; \0 Y. ]

作者: nolita    时间: 2020-8-10 14:53
你的主函数连while都没有不死才怪。
作者: TaylorA    时间: 2020-8-10 15:26
楼上说的对                             




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2