独闷闷网

标题: 单片机莫名其妙的复位 [打印本页]

作者: 又一个暑假    时间: 2015-4-5 01:33
标题: 单片机莫名其妙的复位
本帖最后由 又一个暑假 于 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
这个现象确实很奇怪。我也想不出是什么原因。但是我建议你把这两个函数合并成一个函数,再测试,如果还会复位,你就逐行删除代码,直到不会复位为止,也许这样可以帮你找到是哪行代码导致这个问题。
作者: 又一个暑假    时间: 2015-4-6 00:14
本帖最后由 又一个暑假 于 2015-4-6 00:17 编辑
jianhong_wu 发表于 2015-4-5 18:20
这个现象确实很奇怪。我也想不出是什么原因。但是我建议你把这两个函数合并成一个函数,再测试,如果还会复 ...

鸿哥我找到毛病了,是数组定义的长度太短.而且Keil没警告。我这个数组是用来存放串口要发送的数据,如果太短还可能出现串口发送乱码




欢迎光临 独闷闷网 (http://dumenmen.com/) Powered by Discuz! X3.2