|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问,我现在做 2114 的产品开发.出现以下问题,特向您请教! , K4 {5 }0 H; }* I# [, ]4 m
6 w8 Y9 D* }* X7 t$ G5 G5 q) n问题:
3 I; b' ]1 s5 f( ]2 a/ ~我们开发的产品要采样,采用周期固定.于是我们采用 timer0 进行时钟触发,利用触发中断程序 每隔 10 毫秒采样一次并显示波形.这都能很好的进行.但是在中断程序里面对几个全局变量赋值, 跳出中断后却不能使用该全局变量.很是头疼!请赐教!!
' v* z# F) _! h/ U, L# J( t3 I% N4 R6 Y7 F1 ?5 } c+ ^
框架如下:
5 D# n9 x: G+ D+ R: c Quint8 a; //全局变量
" U5 W( K& U' m: N/ @6 `( p2 \& Pvoid __irq funtimer0() % I% K! h* f8 x' C
{ & }* c& c' E0 a5 ~( r" l" M% ?6 ~* s% w" N5 h
...
" U4 H0 U- {" m. ^# s1 Va=0; //在中断函数里面对全局变量赋值
: C* c$ F7 h c7 y; d: k) T% B... 1 S U3 J2 O; Y# r& T+ B
} " z6 b1 y+ G& r, J9 F4 M2 a
void fun1() , d4 s- {% l, h6 I3 U
{ 0 _+ G0 W+ C) b, `
uint8 i; 4 ]2 w# I* ~- s
i=0; c5 Z8 G5 [: e5 X( N9 F8 m
.......
& M# v5 W2 U" B2 n2 ai=a; // 出错位置,在调试过程中运行到当前位置,鼠标移动到变量 a 上 $ \ r5 Y! H. |; ]$ e( b
// 显示数值是 0,但是不能传给 i,i 的值不会随该命令改变. 4 o5 v+ z. `7 Z; |' \
...... }
. v* A) Z N u2 e+ @因此,我在中断函数中采集到的数据放到全局数组中.采集完成关中断后在用户模式下的程序中来处理该数组,但是该数组中的数据也不能使用!全局数组变量占 1000 个字节,IRQ 堆栈长度是 256.
{3 A: h! q6 v6 b4 D/ j
/ F9 U) o0 ^) \1 m( i* M- U |
|