又一个暑假 发表于 2015-4-5 01:33:17

单片机莫名其妙的复位

本帖最后由 又一个暑假 于 2015-4-5 12:41 编辑

有2个不同任务的函数 如果两个同时调用就会导致单片机复位 这是什么原因,如果注释掉其中一个就不会

坚鸿-深圳(1662007561) 7:55:49

@又一个暑假-沪
又一个暑假-沪:有2个不同任务的函数 如果两个同时调用就会导致单片机复位 这是什么原因呢


鸿哥提问:什么叫同时调用?有同时吗?如果是分别在主程序和中断里调用,有可能是共同改变和判断同一个全局变量。




坚鸿-深圳(1662007561) 7:58:36

@又一个暑假-沪 还有一种情况,主程序与中断程序不能共同调用同一个涵数的。

坚鸿-深圳(1662007561) 8:00:52

@又一个暑假-沪 你是不是用了嵌入式系统,在2个不同任务的函数里,也是不能调用同一个涵数的。

回鸿哥:我提问的没描述清楚,我调用的函数都是在主函数,如:
while(1)
{
ReadKey();
Key_Service();
}

如果注释掉一个函数功能都正常,就是2个都没注释就会复位,程序中没用定时器、中断、看门狗。

jianhong_wu 发表于 2015-4-5 18:20:23

这个现象确实很奇怪。我也想不出是什么原因。但是我建议你把这两个函数合并成一个函数,再测试,如果还会复位,你就逐行删除代码,直到不会复位为止,也许这样可以帮你找到是哪行代码导致这个问题。

又一个暑假 发表于 2015-4-6 00:14:14

本帖最后由 又一个暑假 于 2015-4-6 00:17 编辑

jianhong_wu 发表于 2015-4-5 18:20
这个现象确实很奇怪。我也想不出是什么原因。但是我建议你把这两个函数合并成一个函数,再测试,如果还会复 ...
鸿哥我找到毛病了,是数组定义的长度太短.而且Keil没警告。我这个数组是用来存放串口要发送的数据,如果太短还可能出现串口发送乱码
页: [1]
查看完整版本: 单片机莫名其妙的复位