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- u
while1里面不注释 中断里面注释就不行???
- 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 a
while(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/ @ N
2 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