|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问,我现在做 2114 的产品开发.出现以下问题,特向您请教!
* z8 |& x( |2 j& d% o. B/ U( f+ H$ i; Z
问题:
% ~8 N& \0 D. y我们开发的产品要采样,采用周期固定.于是我们采用 timer0 进行时钟触发,利用触发中断程序 每隔 10 毫秒采样一次并显示波形.这都能很好的进行.但是在中断程序里面对几个全局变量赋值, 跳出中断后却不能使用该全局变量.很是头疼!请赐教!!
' l! u3 ?# `5 L0 z4 V b& [* c! t% P9 [
框架如下:
" L( `9 ~) f9 V h& X# Vuint8 a; //全局变量
: {: U/ W% N8 B2 S: F B' B5 Vvoid __irq funtimer0() 0 V, v1 v; I0 H
{ Z9 |) I1 Z: V% B: H4 g# h+ A
... 7 G" B: d0 Y. A V4 u# K5 y; c$ z
a=0; //在中断函数里面对全局变量赋值
' ?8 D1 P9 {$ c7 _ x... ' p9 Y/ x+ {1 S p P2 `- c
} ! g7 c$ h4 g& Y. S/ G
void fun1()
9 `9 L6 T8 e, F/ k: _{
$ b0 |. H; I8 P5 u' p: z3 tuint8 i;
0 P8 N; ]9 e) [6 P( I' e# U z0 a4 Fi=0; ( j* V8 h, x6 X- E3 v% n2 d
....... ) D9 v% i0 d9 g$ _
i=a; // 出错位置,在调试过程中运行到当前位置,鼠标移动到变量 a 上
2 I9 z6 b( K2 J1 ?// 显示数值是 0,但是不能传给 i,i 的值不会随该命令改变.
% F, E# z' L& s4 M2 }: N; H! Z' D...... } 3 t g' Q7 h$ N9 [% e4 j D4 `
因此,我在中断函数中采集到的数据放到全局数组中.采集完成关中断后在用户模式下的程序中来处理该数组,但是该数组中的数据也不能使用!全局数组变量占 1000 个字节,IRQ 堆栈长度是 256. 5 P9 j9 q( A: `
2 U5 w# i9 ~. {) X |
|