|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问,我现在做 2114 的产品开发.出现以下问题,特向您请教! : z$ L* {; ]% l7 R, [" f5 e
1 I U! H& d* T$ a3 \4 P/ w0 Q: z问题:
# b( {3 ~+ A* o- y! a1 Z我们开发的产品要采样,采用周期固定.于是我们采用 timer0 进行时钟触发,利用触发中断程序 每隔 10 毫秒采样一次并显示波形.这都能很好的进行.但是在中断程序里面对几个全局变量赋值, 跳出中断后却不能使用该全局变量.很是头疼!请赐教!! ( ?. W8 r) Q2 i8 X0 N6 [
! H) E P8 I2 n \7 ^) b( `! M4 v0 P5 D
框架如下:
8 X7 L3 H* I6 M% j3 p. n& T8 Quint8 a; //全局变量
- s7 g/ S2 {& Y1 g8 `: L: Qvoid __irq funtimer0()
$ z% N' d: n7 s& ^6 L' U0 y* o. l{
! \) z* x- h+ ?( y/ w! F7 E* Z6 [...
1 u* G4 e! Z$ s! I7 ha=0; //在中断函数里面对全局变量赋值
2 k: _% F% Y4 k9 s... " n2 |. P7 o4 s& A
}
, a0 C* m8 c% n6 X6 \$ wvoid fun1() ) z' x3 o3 }2 d4 ^4 w% T
{ - t' D4 k) N/ f! z* ~
uint8 i;
- n" p: ~" _1 ^$ d* t( J* d' \i=0;
W. ~5 E; p6 T. W+ P g5 ]6 D....... , k0 M5 ^/ _2 O! B1 {* S
i=a; // 出错位置,在调试过程中运行到当前位置,鼠标移动到变量 a 上
6 E* P6 s: h& ?# K) w// 显示数值是 0,但是不能传给 i,i 的值不会随该命令改变. 4 t: M2 r: A* Q
...... }
! U- Q3 r k2 O8 Y因此,我在中断函数中采集到的数据放到全局数组中.采集完成关中断后在用户模式下的程序中来处理该数组,但是该数组中的数据也不能使用!全局数组变量占 1000 个字节,IRQ 堆栈长度是 256. ) P a& B z: |5 N; N+ S- O
0 S! U% T a! k. y( a6 p
|
|