单片机莫名其妙的复位
本帖最后由 又一个暑假 于 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个都没注释就会复位,程序中没用定时器、中断、看门狗。
这个现象确实很奇怪。我也想不出是什么原因。但是我建议你把这两个函数合并成一个函数,再测试,如果还会复位,你就逐行删除代码,直到不会复位为止,也许这样可以帮你找到是哪行代码导致这个问题。 本帖最后由 又一个暑假 于 2015-4-6 00:17 编辑
jianhong_wu 发表于 2015-4-5 18:20
这个现象确实很奇怪。我也想不出是什么原因。但是我建议你把这两个函数合并成一个函数,再测试,如果还会复 ...
鸿哥我找到毛病了,是数组定义的长度太短.而且Keil没警告。我这个数组是用来存放串口要发送的数据,如果太短还可能出现串口发送乱码
页:
[1]