|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问,我现在做 2114 的产品开发.出现以下问题,特向您请教! , g% L5 `: X/ V& r
" `3 m6 T& V# `! S! V: n问题:
7 K: }" \" `4 I, g, N我们开发的产品要采样,采用周期固定.于是我们采用 timer0 进行时钟触发,利用触发中断程序 每隔 10 毫秒采样一次并显示波形.这都能很好的进行.但是在中断程序里面对几个全局变量赋值, 跳出中断后却不能使用该全局变量.很是头疼!请赐教!! + b" D. y# ^. q; C
7 l+ [9 @4 N3 T9 l; F
框架如下:
! `( c1 P3 }0 X" P+ Kuint8 a; //全局变量 : Z8 s7 v2 j& A/ T+ M$ j7 h& w# R
void __irq funtimer0() 2 x: Z' L+ l9 N( O7 u+ p* U% L
{ ) S c5 _# D" _# K3 b* ]. o
... ) G- m& x$ B8 {# _
a=0; //在中断函数里面对全局变量赋值
F8 m) z9 ~8 A; C& u% m... / b3 ~0 C3 y! y( ^; S6 j, R
} 4 r' H9 m; U7 g: _# i- {) v
void fun1() . z9 x! c; j+ v ~
{ # i4 H4 w% |' ]7 g( x" [
uint8 i; 4 t2 [; F$ }$ W
i=0; ) E6 ?& L2 G" m9 N o4 C( }* y _$ x
.......
, j* R5 g* u' P' Ii=a; // 出错位置,在调试过程中运行到当前位置,鼠标移动到变量 a 上
; l9 \' T5 n2 r. f! I; T% f, B// 显示数值是 0,但是不能传给 i,i 的值不会随该命令改变.
{; I5 H9 w/ w$ b2 e/ B...... } : |, ]- n; v+ ^! {# Y9 u9 H
因此,我在中断函数中采集到的数据放到全局数组中.采集完成关中断后在用户模式下的程序中来处理该数组,但是该数组中的数据也不能使用!全局数组变量占 1000 个字节,IRQ 堆栈长度是 256. E' ?$ v9 `, \8 o- E8 O
( V8 P9 o9 \$ f- G0 t* m+ O
|
|