|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问,我现在做 2114 的产品开发.出现以下问题,特向您请教!
7 c1 x+ Q- [4 l/ Y6 s: R: H3 u
d$ z& D- L, s- o% s问题:
$ J7 a- _0 O; v2 k' e$ V+ N我们开发的产品要采样,采用周期固定.于是我们采用 timer0 进行时钟触发,利用触发中断程序 每隔 10 毫秒采样一次并显示波形.这都能很好的进行.但是在中断程序里面对几个全局变量赋值, 跳出中断后却不能使用该全局变量.很是头疼!请赐教!! : ~, `; l# }5 C- q
+ t$ y! s: j2 {' h+ i5 g7 v r
框架如下: ) k3 u) f& O8 w4 e" @7 l
uint8 a; //全局变量 # b" R, j+ U8 ?# h# R5 h
void __irq funtimer0()
1 d4 U- Y" y4 L1 y" {1 G{
& T0 t9 d3 z" P% z5 y: X...
m8 C. K; p) H1 q% [a=0; //在中断函数里面对全局变量赋值
. z2 t8 m- a8 Q' k" d, P... 7 U3 T/ o- V4 G. ?; |9 {# }3 r
} ' T; ]/ ?8 [" d1 ]
void fun1() : o3 o$ z! J+ t0 { L2 q1 {
{ + M8 l* m8 R0 ?# o# t, w; H
uint8 i;
( O3 \1 p) O6 `9 j) [# W% Ei=0; / k7 K& r3 e( \3 j
....... ' C) K6 Z4 b( [7 k0 @. R7 S
i=a; // 出错位置,在调试过程中运行到当前位置,鼠标移动到变量 a 上 5 T K1 C9 Q1 y, {0 d G
// 显示数值是 0,但是不能传给 i,i 的值不会随该命令改变. + G6 A E( |( Q
...... } * H3 M( [1 m. q
因此,我在中断函数中采集到的数据放到全局数组中.采集完成关中断后在用户模式下的程序中来处理该数组,但是该数组中的数据也不能使用!全局数组变量占 1000 个字节,IRQ 堆栈长度是 256. / i/ F' Q0 K" L! Z& p
+ N) S6 j; |: v |
|