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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
我的cnt是一个开在main外的全局变量 就是想接受三次发送一次
0 l5 |& l$ Z2 U在中断中写可以实现 但是把那部分放到main里面就一直不发送 很奇怪。
+ l; z1 A) C1 I: f, d: G就是把while1里面内容注释 中断里面不注释可以
4 a  ^1 J+ j5 H$ Y; p9 uwhile1里面不注释 中断里面注释就不行??? 4 B% ?- Z" T& k3 U
- Q9 Y0 ?8 ?. Q1 u: y6 |
我想既然在中断里面可以实现我的功能 那么说明问题是cnt上
: y( w! M* Z! K+ y' U* }+ ~9 \2 |: Z" r可是 就感觉cnt没有变化一样..不太明白 望大家赐教..
, p- ~& s: G& M' k. y% [6 u8 gwhile(1)* A0 d3 e; I5 Y
    {
- |3 X- M7 F6 w6 d      IF(cnt>=3)
! C: N1 g8 k# S5 C- l4 @1 t      {4 K6 O# `. |. V2 M$ R5 k
      cnt=0;+ `$ Z6 N2 j9 ]8 o9 q3 {
      Send_Byte('c');
( K2 D5 d9 Z$ X) R1 d5 C0 U: [" d7 C      }2 r+ N  a; T4 I. m  V7 S
    }
0 f8 x) ^! v& M, U
; y3 i: C4 I, j5 U#pragma vector = USCIAB0RX_VECTOR
! Y5 ]; }0 |) ?% e7 p# Y__interrupt void ReceiveInterrupt(void)( K+ m7 d+ t' n& c
  {/ |% r/ v0 r( N/ m: n: Z
    P1OUT  ^= BIT6;     // light up P1.6 LED on RX  ' F3 q8 L5 v  C4 C' V
    cnt++;
2 O! I3 s+ c* @7 y, e, ?# b# G3 N' f  t    IFG2 &=~UCA0RXIFG;' l  s# @+ ?& P: d; s0 g
    /*if(cnt>=3)/ l% l9 V: a+ n
    {
- n: F3 G6 F/ Q0 O9 ~      cnt=0;4 d9 D, G+ u4 z$ [; `9 R1 L/ x
      Send_Byte('c');) G/ X) M7 L! D/ r
    }*/3 W: ^& ]$ J! M3 G
  }
. O# H  Y/ d2 d9 {: G

该用户从未签到

3#
发表于 2020-9-3 09:36 | 只看该作者
你试下是不是主循环一直没得到执行,我怀疑程序一直就在某个中断里,根本就没跳出中断
  • TA的每日心情
    开心
    2023-6-2 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-25 01:41 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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