|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问,我现在做 2114 的产品开发.出现以下问题,特向您请教! 2 K3 ?, l' N- n5 u9 C
2 F) A' O x; S+ J问题:
: H# N% i$ l' P( Q3 ]! `我们开发的产品要采样,采用周期固定.于是我们采用 timer0 进行时钟触发,利用触发中断程序 每隔 10 毫秒采样一次并显示波形.这都能很好的进行.但是在中断程序里面对几个全局变量赋值, 跳出中断后却不能使用该全局变量.很是头疼!请赐教!! : a& H2 c2 s0 c7 l) g# D- q, I, r
: C; h+ Q. R0 o! G3 t
框架如下:
$ y! X) Y( L0 M3 t. [1 m% juint8 a; //全局变量
" `) Q+ ~7 ?, @* x) z2 uvoid __irq funtimer0()
" E7 T) e* X1 i! {( F, L) y{ * A" r! [, V5 L9 u
...
2 W' E! N* l8 G1 _ Da=0; //在中断函数里面对全局变量赋值
- @% U: t' |) J9 Q% `9 g... 0 H8 a7 i0 s% {6 ^* Q/ j
} ' Z: U; L9 f" I6 q, [4 | e
void fun1() - l; R3 A+ ?8 |7 p1 m& z
{
) h* ^) U: ^. @$ I" |9 t, U a! ~ {uint8 i;
" r* K( E6 S4 @! k" Gi=0; p, B7 @' _6 B% Y
.......
( @3 m* {$ ]! ci=a; // 出错位置,在调试过程中运行到当前位置,鼠标移动到变量 a 上 + Q3 ?/ J, N4 s8 v) w
// 显示数值是 0,但是不能传给 i,i 的值不会随该命令改变.
2 o5 o! h' J& ~5 @ a...... } ' A9 y+ _) d& M& Z; L
因此,我在中断函数中采集到的数据放到全局数组中.采集完成关中断后在用户模式下的程序中来处理该数组,但是该数组中的数据也不能使用!全局数组变量占 1000 个字节,IRQ 堆栈长度是 256. - \+ l3 d2 T7 F3 O8 l+ u& e
( d8 f4 X' m9 Z1 b6 w! D8 q |
|