第4章 调试
4.2 软件调试
在硬件还没有准备好的情况下,在Keil下进行了软件的单步跟踪。通过在keil下单步跟踪调试发现一个问题:在SD卡的发送命令函数中,定义了一个无符号型变量,初始值赋值3对其进行自减操作,判断是否大于等于0,如果为假则循环结束。结果导致程序进入死循环,运行不正常。后来跟踪到这里才发现变量为无符号变量,而我却用来进行自减,当变量自减到0时,因为是无符号变量,所以再自减就变为了128,所以进入了死循环,把变量改为符号型变量,问题解决。
4.3 软硬件的联合调试
硬件制作好后,就开始软硬件的联合调试。其中遇到的问题主要有以下几个:
1. 程序里向串口发送中文字符,结果串口调试助手显示为乱码。首先检查程序的波特率是否和串口调试助手的波特率是否一致,检查是一致的,后面我把中文改为英文,正常显示,猜想可能是串口调试助手版本太低,下载高版本串口调试助手问题解决。
2. I/O端口的输入输出设置错误,导致程序一直不运行。MXT8051F04A单片机和普通的51单片机在I/O端口上有点不一致,普通51单片机自动识别输入输出。但MXT8051F04A必须设置其I/O引脚为输入引脚,还是输出引脚。开始程序全部设置为输出引脚了,这样对SD卡的读取全部无效,导致应答命令始终不对,程序始终不工作。
通过以上的调试,程序运行正常。程序流程如下:首先初始化MXT8051F04A单片机串口,然后执行SD卡初始化操作,SD卡初始化完成后,开始往SD卡的7632扇区写入数据(peng yuan zhi),通过串口调试助手显示刚才写入扇区的数据,然后再读取刚才写的扇区的数据,显示结果见图4-1。我们把SD卡从电路板上取下,插入到电脑的5合1读卡器中,通过WinHex软件在电脑上查看数据是否真的写入到了SD卡中的7632扇区,结果如图4-2所示。通过WinHex的观察,数据确实写入了SD卡的7632扇区。
27
电子科技大学成都学院本科毕业设计论文
图4-1 程序运行结果
图4-2 写入SD卡的数据
28
第4章 调试
图4-3和图4-4为制作的实物照片。图4-3为单片机系统和SD卡模块,图4-4为SD卡模块的背面。
图4-3 实物
图4-4 SD卡模块背面
4.4 本章小结
以上简要的叙述了在系统调试过程中遇到的一些问题和使用的一些调试手段,其中包括硬件调试和软件调试的问题,并给出了问题的解决方法,还有许多常见的问题,这些问题大都是由于本人粗心大意造成的,这里不再加以说明。
29
相关推荐: