真是硬件有问题吗?

holystw   2011-3-2 12:08 楼主
     我使用st公司的三合一板和一个触摸屏进行串口通信,通信方式为中断接收、查询发送,现在通信的接收和发送都可以进行了,由触摸屏观察到的传输数据都正确,但主程序却不能读取接收中断收到的数据,这几天连续发了几个帖子程序怎样才能跳出for循环为什么在主程序里不能看到串口中断接收的数据主程序为什么停在这里不走了? 。说的都是这个问题,试了多种方法,都无法解决。
     现在我把主程序的for循环取消,通信的接收和发送都使用中断进行,在接收中断,接收数据完成后,点亮接收指示灯,然后在主程序里经过延时再把接收指示灯熄灭。程序运行后,程序可以接收触摸屏传送的键码信息,然后直接通过发送中断把键码信息发回触摸屏显示,键码显示正确。对应的接收指示灯也会闪亮。
     但如果在主程序里增加读取接收中断数据的语句,程序就不再响应通信中断了,也不在主程序里运行,在这两个地方设置断点都没有响应。如果按halt停止程序运行,发现指示程序运行的黄色箭头(使用MDK编译、调试),每次都停it.c文件的 HardFaultException函数的while (1)语句上。
/*******************************************************************************
* Function Name  : HardFaultException
* Description    : This function handles Hard Fault exception.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void HardFaultException(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }
}
真是硬件有问题吗?但是在主程序里不添加读取接收中断数据的数据就可以正常运行,到底是硬件问题,还是软件不对呢?

非常期望各位高手和朋友给予指点和帮助!
谢谢!非常感谢!拜托了!

回复评论 (4)

对不起,上面有两个字写错了
在主程序里不添加读取接收中断数据的(数据)就可以正常运行
其中数据两字写错了,应改为语句二字,即应为:
在主程序里不添加读取接收中断数据的语句就可以正常运行
点赞  2011-3-2 16:18
                                 进入HardFaultException时,多数情况是存储器访问错误造成,可能的原因很多,不如野指针、数组越界、堆栈溢出等,要调试才能知道真正的原因。
点赞  2011-3-2 17:00
                                 谢谢!我试试,看能不能找出原因。
点赞  2011-3-2 18:03
问题找到了,版主说得对,确实出现了野指针。在主程序里少了一个while (1)语句。增加该语句后,就一切正常了。
谢谢版主!
点赞  2011-3-3 15:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复