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

请教串口中断里面全局变量失效问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
我的cnt是一个开在main外的全局变量 就是想接受三次发送一次
/ s" k+ |8 Q8 I5 k, l7 V在中断中写可以实现 但是把那部分放到main里面就一直不发送 很奇怪。
+ H: L, N* _7 C0 Y( G  `' ~8 t就是把while1里面内容注释 中断里面不注释可以
* q  m3 Z" X, u& R4 w0 Kwhile1里面不注释 中断里面注释就不行???
7 X, |8 p% y" \7 _5 L7 Z% a, r7 X7 A( r2 U
我想既然在中断里面可以实现我的功能 那么说明问题是cnt上% W0 X; K6 b' A+ u
可是 就感觉cnt没有变化一样..不太明白 望大家赐教..
- Y9 y  Z# t, D8 [while(1)/ S1 |) ], y* f' O1 S6 l' v
    {
" \4 K3 u( M# y1 [7 Q: x/ j$ \      IF(cnt>=3)
& s, N# W% w: x5 v3 X% I8 X      {0 ^  n' B: j3 x9 D; p$ ]2 o8 {
      cnt=0;
3 E* t, S; q+ e5 A; `/ \7 ~; M      Send_Byte('c');
& ]5 p! H$ t: a. ~, n% S      }
: W3 M; r( T( u% f, o  f3 a5 M- W    }% g$ y0 a% J% l( ~# r, s
# I) K/ ]! u  j3 t" c1 ^
#pragma vector = USCIAB0RX_VECTOR
% e6 ?+ K6 v- M9 |& p__interrupt void ReceiveInterrupt(void)
+ Y( U7 V* H5 {9 I6 G  {" ^; ~0 J( l3 C
    P1OUT  ^= BIT6;     // light up P1.6 LED on RX  
% O: T* o+ K1 M  f# T; {3 |    cnt++;: k1 r: a& j# ^( k3 U8 Z0 Q* W
    IFG2 &=~UCA0RXIFG;
0 r$ Y" V7 R! M* W    /*if(cnt>=3)9 S; h) A3 K! L
    {
* ]$ k* @; H9 Y( y2 ^9 `4 X# C/ R      cnt=0;
, V% p7 M/ U$ F  J0 u$ D( M      Send_Byte('c');
1 R% `! J6 V; `- \0 R    }*/8 I( ~: u. S# u# x' c
  }
$ H  |% J; K' }
  • TA的每日心情
    开心
    2023-6-2 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-9-2 15:30 | 只看该作者
    可能是代码优化造成的,cnt变量的读写被优化了,你的cnt定义时加个volatile做限制,看还会不会有问题

    该用户从未签到

    3#
    发表于 2020-9-3 09:36 | 只看该作者
    你试下是不是主循环一直没得到执行,我怀疑程序一直就在某个中断里,根本就没跳出中断
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-21 01:09 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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