在LPC824开发板未配置相应的人际交互手段的情况下,使用其自身的虚拟串口通讯功能就成为一个必要的选项。那如何来测试和使用虚拟串口的通讯功能呢? 在ametal_am824_core_1.02的例程中就有这样的程序,启动工程文件 examples_led/demo_std_led/demo_std_led.uvprojx即可。 主程序的代码为: - #include "ametal.h"
- #include "am_vdebug.h"
- #include "am_led.h"
- #include "am_delay.h"
- #include "am_lpc82x_inst_init.h"
- extern void demo_std_led_entry(void);
- int am_main (void)
- {
- AM_DBG_INFO("Start up successful!\r\n");
- demo_std_led_entry();
- while (1)
- {
- am_mdelay(100);
- }
- }
复制代码经编译下载,可通过串口助手来观察执行效果,参见图1。 图1 通讯效果 若细心看主程序的话,你会发现它是伴有一个指示灯闪动效果的,但却没出现。 追踪函数demo_std_led_entry(),会发现它存于程序demo_std_led.c ,其内容为: - demo_std_led.c // LED以0.3s时间间隔闪烁,PIO0_20控制LED0
- void demo_std_led_entry (void)
- {
- while (1) {
- am_led_on(LED0);
- am_mdelay(300);
- am_led_off(LED0);
- am_mdelay(300);
- }
- }
复制代码那LED0又是在何处定义的?继续追踪可以找到它在文件am_board.h中,其内容为: #define LED0 0 #define LED1 1 而它的引用位置则在文件am_board.c中,内容为: const am_led_info_t g_led_info[] = { {PIO0_20, TRUE}, {PIO0_21, TRUE}, }; 原来它驱动的是引脚PIO0_20,而板上LED的引脚分别是PIO0_15~PIO0_17。 图1 LED灯线路 将它改为: const am_led_info_t g_led_info[] = { {PIO0_15, TRUE}, {PIO0_16, TRUE}, }; 则可获得红灯的闪烁效果,为使红灯和绿灯同时闪烁,需修改void demo_std_led_entry (void) 函数,将其改为: - void demo_std_led_entry (void)
- {
- while (1) {
- am_led_on(LED0);
- am_led_on(LED1);
- am_mdelay(300);
- am_led_off(LED0);
- am_led_off(LED1);
- am_mdelay(300);
- }
- }
复制代码若想红绿蓝3灯同时闪烁,则要改为: #define LED0 0 #define LED1 1 #define LED2 2 而它的引用位置则在文件am_board.c中,内容为: - const am_led_info_t g_led_info[] = {
- {PIO0_15, TRUE},
- {PIO0_16, TRUE},
- {PIO0_17, TRUE},
- };
- void demo_std_led_entry (void)
- {
- while (1) {
- am_led_on(LED0);
- am_led_on(LED1);
- am_led_on(LED2);
- am_mdelay(300);
- am_led_off(LED0);
- am_led_off(LED1);
- am_led_off(LED2);
- am_mdelay(300);
- }
- }
复制代码由此看见,读懂程序并将程序改为所需的功能还是很锻炼功力的。
|