EDA365电子论坛网

标题: 请教串口中断里面全局变量失效问题 [打印本页]

作者: kjdskj    时间: 2020-9-2 14:33
标题: 请教串口中断里面全局变量失效问题
我的cnt是一个开在main外的全局变量 就是想接受三次发送一次
8 I! ]9 S, \4 E' C4 D1 c在中断中写可以实现 但是把那部分放到main里面就一直不发送 很奇怪。% {7 c6 U' Y& [
就是把while1里面内容注释 中断里面不注释可以
5 @) f( s9 a5 P2 T0 u- uwhile1里面不注释 中断里面注释就不行??? - M0 F6 W  d  x8 a- h
  O# S! y( N; J  u+ m
我想既然在中断里面可以实现我的功能 那么说明问题是cnt上; j) |$ g1 r; h8 U) y2 V6 i8 b
可是 就感觉cnt没有变化一样..不太明白 望大家赐教..
/ ?* ^5 v( L) x, ~9 e1 awhile(1)- X! G0 b3 u( e3 h
    {8 c7 w  p7 d7 c) D8 A$ ]; [
      IF(cnt>=3)
! z% o- f5 D- E8 ?% z. H      {
6 l5 L# V+ V1 F5 l      cnt=0;
- N9 p, _* B# }8 R; d* W      Send_Byte('c');0 u! \: K* v3 \* c  z2 U
      }' o, ?* N0 K4 F3 T+ f( m$ Q" H
    }
1 w4 @* N; x8 G" Y# D9 X( f/ @  N2 J3 ]$ z7 ]+ ^. }9 ?% X* ]
#pragma vector = USCIAB0RX_VECTOR
3 e1 E% ]9 {7 ^1 M# r__interrupt void ReceiveInterrupt(void)7 t% b; d. n0 m! d& |! g
  {
. ?: `: j; j; L! w' ^! D' M    P1OUT  ^= BIT6;     // light up P1.6 LED on RX  ( O0 j1 I. W1 N1 e: a
    cnt++;+ Y- l. o% }% v& n; T3 ^5 t
    IFG2 &=~UCA0RXIFG;
; k! L9 _" d* j" w- d3 F2 Z/ [    /*if(cnt>=3)2 S3 T' G8 r3 D4 e0 r  N
    {: z' W/ X! }7 r/ B) c  W3 K
      cnt=0;
/ z8 r4 _0 H) N% F      Send_Byte('c');
  ^: k( L  r6 P  ?. B( y7 l+ ~    }*/
8 s( h' F, w# u  }
6 Y" `4 e% E2 n+ }$ i/ n
作者: Blah    时间: 2020-9-2 15:30
可能是代码优化造成的,cnt变量的读写被优化了,你的cnt定义时加个volatile做限制,看还会不会有问题
作者: wuhoou    时间: 2020-9-3 09:36
你试下是不是主循环一直没得到执行,我怀疑程序一直就在某个中断里,根本就没跳出中断




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