|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问,我现在做 2114 的产品开发.出现以下问题,特向您请教!
( |; S7 s2 x7 Q% z9 P6 v
! P+ }! z( J9 z/ S问题:
9 N9 @- O( w: W* A# T+ x我们开发的产品要采样,采用周期固定.于是我们采用 timer0 进行时钟触发,利用触发中断程序 每隔 10 毫秒采样一次并显示波形.这都能很好的进行.但是在中断程序里面对几个全局变量赋值, 跳出中断后却不能使用该全局变量.很是头疼!请赐教!! 4 m% @" k, g2 _% Z5 U$ C
4 j# A$ ^: W& h' w3 o. s0 d5 Y
框架如下: * A, H9 c5 v. G/ D
uint8 a; //全局变量 4 r8 T% E& F% P4 Y+ o
void __irq funtimer0()
% S6 d6 m' X4 G# b5 g{
j. v' A7 P9 U z% U...
# M1 e. Q! M3 a# \( xa=0; //在中断函数里面对全局变量赋值 - a, q3 Y( \: {! [5 Y
... ; X/ g0 K8 k1 Z, p9 D. a
} 3 h4 L5 B! B1 s+ [
void fun1() & O& D6 C' e9 @9 C; k) |& `7 w* u
{
& Z B4 X4 u2 S+ |/ ]3 e2 Euint8 i; ) }# h- \" x) c
i=0;
% j1 A. q/ H+ W4 ?0 F+ w! E....... # W& }: T6 M: u% Q! K
i=a; // 出错位置,在调试过程中运行到当前位置,鼠标移动到变量 a 上 ! J7 W& u' n- z+ x- ?2 w
// 显示数值是 0,但是不能传给 i,i 的值不会随该命令改变.
3 Q9 ~ o4 h2 E- x! Y4 k...... } : b: ~3 M8 c- F5 v2 B
因此,我在中断函数中采集到的数据放到全局数组中.采集完成关中断后在用户模式下的程序中来处理该数组,但是该数组中的数据也不能使用!全局数组变量占 1000 个字节,IRQ 堆栈长度是 256. 9 ]8 @& c8 |8 B* b
, Q5 _1 Y. y" y2 Y/ H: z9 m |
|