学习LPC17xx – 调试框架

2011-02-12 来自 · 2 评论 

正如这篇日志里所说,最近在学习LPC17xx单片机。这是一款基于ARM Cortex M3的单片机,片上资源丰富。当然所谓学习,也并没有多少的深入,只能说是浅尝辄止,为以后的深入学习作点点铺垫罢了。

NXP公司提供了一个代码库,可以在这里下到。尽管我觉得它的命名不统一,甚至还有Bug(以后会提到)。然而用厂商提供的固件库开发是大势所趋。所以在读用户手册了解各个寄存器的基础上,我还是决定用代码库来操作。

所谓开发必定要有方便的调试输出,总不能所有内容都用watch去看吧。我的开发板上有一块彩色的带有触摸屏的LCD,然而它的操作太高级了,不适合入门。万幸固件库中提供了一个debug_frmwrk的头文件,调用它的函数可以初始化UART0(或1)为调试输出端口,也定义了一些宏,方便的输出字符串、字符、数字(8、16、32位十进制或十六进制),还带有输入字符的宏,还提供了一个类似于assert的宏。不过这个库本身就是为调试方便所设立,可能不带缓冲甚至是阻塞的(blocking)。作为测试,我的代码如下:

#include "LPC17xx.h"
#include "debug_frmwrk.h"
#include "lpc17xx_libcfg.h"
 
int main()
{
	uint8_t i8 = 12;
	uint16_t i16 = 1234;
	uint32_t i32 = 12345678;
	char chr;
	debug_frmwrk_init();
	_DBG("_DBG() Test");
	_DBG_("_DBG_() Test");
	_DBC('A'); _DBC('\n');
	_DBD(i8); _DBC('\n');
	_DBD16(i16); _DBC('\n');
	_DBD32(i32); _DBC('\n');
	_DBH(i8); _DBC('\n');
	_DBH16(i16); _DBC('\n');
	_DBH32(i32); _DBC('\n');
	while(chr = _DG) {
		_DBC(chr);
		CHECK_PARAM(chr - 'X');
	}
	while(1);
}

PC端的串口调试工具推荐Terminal,在这里可以下到,可能需要梯子。在本站的文件下载里面也有。

第 3 页 共 3 页123