|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问,我现在做 2114 的产品开发.出现以下问题,特向您请教!
" [3 o, U. x. x e: y! @& l7 t& Z% K, Q9 o) B7 W+ ?
问题:
# }/ V' Q" k9 D: h我们开发的产品要采样,采用周期固定.于是我们采用 timer0 进行时钟触发,利用触发中断程序 每隔 10 毫秒采样一次并显示波形.这都能很好的进行.但是在中断程序里面对几个全局变量赋值, 跳出中断后却不能使用该全局变量.很是头疼!请赐教!!
4 \. k y+ Z* [* l- v
+ H7 h3 {7 a+ u3 l框架如下:
- D3 k. @3 E5 N) xuint8 a; //全局变量 4 }' B# L1 I b- y
void __irq funtimer0()
+ r+ u* L0 x+ G$ t4 T: ?- C{
$ d( U7 J/ V; Q! b, M4 G; r9 E...
) i1 T6 Y# Z. v: K8 Da=0; //在中断函数里面对全局变量赋值
! a; }) S. M- }: t2 ~...
7 E; ]; P+ N1 [7 u}
8 I& z- e. J) kvoid fun1() $ x! K$ t, A2 { H% e3 A! z
{ ) i, u! ^6 z: Y4 Y- L
uint8 i;
. q1 e- ?( J7 }i=0; 4 j x5 Z' i* R& l
....... " m, G+ W& W @* D" ?
i=a; // 出错位置,在调试过程中运行到当前位置,鼠标移动到变量 a 上 5 e+ G8 [ d# Z: ?( q1 l K) S" w8 a
// 显示数值是 0,但是不能传给 i,i 的值不会随该命令改变.
8 y+ i+ Z, v* s- A...... } 1 N2 A0 d& _3 R7 c ]$ n- o
因此,我在中断函数中采集到的数据放到全局数组中.采集完成关中断后在用户模式下的程序中来处理该数组,但是该数组中的数据也不能使用!全局数组变量占 1000 个字节,IRQ 堆栈长度是 256. 0 {! l' Q) D/ D7 i. ~# k* W( Q/ p
* B' E. @- _' x
|
|