|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问,我现在做 2114 的产品开发.出现以下问题,特向您请教!
7 c- i& r1 o- U
# T' j g5 N; S* Y6 Y问题: ( c( P# `8 B; k
我们开发的产品要采样,采用周期固定.于是我们采用 timer0 进行时钟触发,利用触发中断程序 每隔 10 毫秒采样一次并显示波形.这都能很好的进行.但是在中断程序里面对几个全局变量赋值, 跳出中断后却不能使用该全局变量.很是头疼!请赐教!!
0 P, B$ E1 n$ L9 P+ _# P. U
5 P; }3 n$ n& Q; F# u# M3 j框架如下:
2 q( d0 h" k/ y2 o+ kuint8 a; //全局变量 " f( b) O2 o. d
void __irq funtimer0()
4 o" C8 _8 a; O$ y [8 g* V% q{
. e+ u4 b: B4 g2 y# W0 _+ Y... 0 `6 M$ h! w: `# b$ i8 l
a=0; //在中断函数里面对全局变量赋值 & r4 l2 v9 X* m/ u: ?8 {$ i1 R
...
3 J }6 P7 @3 @: x, s# m v6 F% n2 Q} 8 r0 V% y Y; F9 k' H, p
void fun1() , c- @8 ^% v& _, P# b; I
{ 9 i9 o: q, n( s+ i
uint8 i; ! a1 ^/ \* U9 D1 D3 i( n
i=0;
. `; I" F1 P4 j.......
+ S4 I7 u) @' K5 ii=a; // 出错位置,在调试过程中运行到当前位置,鼠标移动到变量 a 上 - n# p# ~9 M/ g4 Y5 p& ~
// 显示数值是 0,但是不能传给 i,i 的值不会随该命令改变.
) ~. |. F0 G: u4 x" Y...... }
8 P, `( e) h& m1 L9 b: a因此,我在中断函数中采集到的数据放到全局数组中.采集完成关中断后在用户模式下的程序中来处理该数组,但是该数组中的数据也不能使用!全局数组变量占 1000 个字节,IRQ 堆栈长度是 256.
0 G0 f' t$ U9 R2 H9 {' E5 C; q6 Z2 C. |7 A- S1 {/ ~5 ^, E
|
|