|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问,我现在做 2114 的产品开发.出现以下问题,特向您请教!
/ S' z8 m* `$ r# h3 q- M X- U- B0 ]8 X! h: Y% J( H) T. O
问题:
# {; `+ [, ~- n- C- L# R( b我们开发的产品要采样,采用周期固定.于是我们采用 timer0 进行时钟触发,利用触发中断程序 每隔 10 毫秒采样一次并显示波形.这都能很好的进行.但是在中断程序里面对几个全局变量赋值, 跳出中断后却不能使用该全局变量.很是头疼!请赐教!! $ D8 V2 L1 `8 c( E5 C$ a' w; v% o
1 y+ @! Y) h- |& O4 ~% J8 B
框架如下:
/ b7 @ @; }3 h; c0 J+ Nuint8 a; //全局变量
/ @: A1 a# s7 N0 ?: H( hvoid __irq funtimer0()
/ L' c! Y3 H: a9 Z" Q7 Z{ ; u# \) p; w* m- k3 e
... 1 m Q1 x A# ?$ T4 L& y
a=0; //在中断函数里面对全局变量赋值 % G9 ^! ]' o o
...
, K% l* j$ \& k% y% i} % w/ A9 i$ I4 T, M" ]# J' |5 }4 C
void fun1()
" S: l( D/ Z4 e: R{ ' p- r1 o& u( w. c- [
uint8 i; / W$ F3 I. b4 Y3 ^
i=0; 8 T9 V8 p3 r* M8 A) x
....... * W1 k0 T/ c( i5 {) k# D7 I* L
i=a; // 出错位置,在调试过程中运行到当前位置,鼠标移动到变量 a 上 ~9 |3 ]9 D6 C* l5 g+ N
// 显示数值是 0,但是不能传给 i,i 的值不会随该命令改变. 9 a% N9 l, Z) c" y( p
...... }
! Z/ r: @% ]& r N* x, V因此,我在中断函数中采集到的数据放到全局数组中.采集完成关中断后在用户模式下的程序中来处理该数组,但是该数组中的数据也不能使用!全局数组变量占 1000 个字节,IRQ 堆栈长度是 256.
2 K$ a: t$ Y8 G& u& C0 m8 m! p3 C0 S5 V4 u3 h
|
|