|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问,我现在做 2114 的产品开发.出现以下问题,特向您请教!
- S6 x5 f9 L4 q; X6 h6 _9 r' W) ]' Z/ i7 m5 q
问题:
1 H9 j- S+ \1 p5 _, @我们开发的产品要采样,采用周期固定.于是我们采用 timer0 进行时钟触发,利用触发中断程序 每隔 10 毫秒采样一次并显示波形.这都能很好的进行.但是在中断程序里面对几个全局变量赋值, 跳出中断后却不能使用该全局变量.很是头疼!请赐教!!
5 q2 ^4 j- T* t$ e3 M# G. X$ x, p1 p* N
框架如下:
( i* c5 i6 d; a; B9 j: O8 ?uint8 a; //全局变量 3 E6 A8 c( w: D7 q+ f9 @2 `
void __irq funtimer0() + J) k* o( Y6 w5 L, M) [0 R0 `
{ 4 i. J/ ~: J2 z+ L/ t
...
* _' m( @% N1 v w( l, W8 F; ea=0; //在中断函数里面对全局变量赋值 # _ a K4 ?) J; F1 {
... & E& `# e+ C) h, v$ Y/ g2 l
}
0 m3 h5 ?. q- U/ w+ f3 w1 avoid fun1() $ `. h) `6 }0 V! ~) H& @/ N
{ 0 q' }: p) c- \: {. L
uint8 i;
) {1 h9 N# |4 o- r6 _/ Ki=0; * \5 [$ G+ s- A7 o( C) o: _
....... ( A& T4 Q8 }" c* J- D' S
i=a; // 出错位置,在调试过程中运行到当前位置,鼠标移动到变量 a 上 3 u! ~5 Y" v$ D1 Y5 A
// 显示数值是 0,但是不能传给 i,i 的值不会随该命令改变. % i1 F. T; ^5 g- m
...... }
9 m' ^( {; r& A3 P! x, U9 ?. Z因此,我在中断函数中采集到的数据放到全局数组中.采集完成关中断后在用户模式下的程序中来处理该数组,但是该数组中的数据也不能使用!全局数组变量占 1000 个字节,IRQ 堆栈长度是 256.
- A# s5 d9 [+ s8 v5 v/ C- Z. C4 F0 `* H/ U- |- P9 f" T
|
|