嵌入式技术论坛
直播中

王敏

7年用户 1405经验值
私信 关注
[问答]

在任务中使用rt_thread_delay导致变量会全部被清零要怎么解决?

我定义了一个全局数组变量。在一个任务里使用它来存储ADC采集的到的数据,我的ADC获取函数也在这个任务中调用,问题是当我在ADC获取函数中用了rt_thread_delay的延时函数来后,我发现这个变量会全部被清零,请问要怎么解决啊。
u16 Get_Adc_Average(u8 ch,u8 times)
{
    u32 temp_val=0;
    u8 t;
    for(t=0;t     {
        temp_val+=Get_Adc(ch);
        rt_thread_delay(1);//单步调试到这里执行后,变量数组就全部清零了
    }
    return temp_val/times;
}

回帖(2)

王飞云

2022-5-30 11:14:55
我估计线程栈开太小了,delay里面使用深度记得有几百字节,然后爆炸了,你可以对被篡改的数据下个写断点。
举报

jinyi7016

2022-5-30 18:09:47
任务的内存分配的太小了,你分配大一些试试。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分