微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > LPC54608开发板基本例程的测试

LPC54608开发板基本例程的测试

时间:10-02 整理:3721RD 点击:

在LPC54608的开发包中,配置了较为丰富的例程,通过这些例程可以引导我们较快地上手它的使用和开发。初略地讲可把例程分为两类,一类是基于串口的内部资源用法的演示例程,另一类是基于触摸屏的演示例程。(含第三方演示例程)

在介绍这两类例程之前,先插播一个小介绍,就是LPC54608开发板已有C版本了,主要区别由红色线框标出。说明已有B版本的灵活测试,已趋于功能相对固定。


图1  B版本


图2  C版本

1.基于串口的演示例程

    在开始验证此类例程前,首先要了解一下Jp6和JP5的用途。当进行调试下载时,一定要将JP5至于OFF状态,否则是无法查看到调试器的,也就无法进行程序的下载。

当用到串口进行验证时,不但要将JP5保持OFF状态,JP6也应置为OFF状态,否则串口就无法正常使用。

1)hello_world例程

hello_world例程是一个串口通讯的检测例程,其程序主体如下:

while (1)

    {

        ch = GETCHAR();

        PUTCHAR(ch);

    }

其作用就是不断检测是否有字符接收,有则把接收的字符原样发回,在验证时,相应的串口参数如图3进行设置,则可验证其功能。


                 图3  串行通讯

2)A/D采样例程

     lpc_adc_basic例程是一个A/D采样的检测例程,其程序主体如下:

while (1)

    {

        GETCHAR();

        ADC_DoSoftwareTriggerConvSeqA(DEMO_ADC_BASE);

        while (!ADC_GetChannelConversionResult(DEMO_ADC_BASE,      DEMO_ADC_SAMPLE_CHANNEL_NUMBER, &adcResultInfoStruct))

        {   

        }

        PRINTF("adcResultInfoStruct.result        = %d\r\n", adcResultInfoStruct.result);

        PRINTF("adcResultInfoStruct.channelNumber = %d\r\n",          adcResultInfoStruct.channelNumber);

        PRINTF("adcResultInfoStruct.overrunFlag   = %d\r\n", adcResultInfoStruct.overrunFlag ? 1U : 0U);

        PRINTF("\r\n");

        }

其作用就是通过不断检测是否有字符接收,有则启动对Adc0口的A/D转换,并输出采集结果,其效果如图4所示。


      

                 图4  A/D采样

3)RTC例程

rtc例程是一个检测RTC的例程,其功能是以程序设置的时间为起始时间来启动RTC,然后再设置一个有效的时间值并通过串口发出,则会呈现图5所示的效果。

之所以设置的时间与提示的时间出现一定的偏差,是因为提示时间=当前时间+设置时间,而RTC时钟是处于运行状态的,所设置的时间其实是与发送那一刻的RTC时间相加所产生的提示时间,故其时间偏差就是提交时间与初始时间的时间差。

实现上述处理的关键语句如下:

        /* 读取RTC 的秒寄存器到当前时间变量中 */

        currSeconds = RTC->COUNT;

        /* 将提示时间相到时间变量中 */

        currSeconds += sec;

        /* 设置提示时间 */

        RTC->MATCH = currSeconds;

        /* 获取提示时间值 */

        RTC_GetAlarm(RTC, &date);

此外,该时间提示功能是可以连续进行的,其执行效果如图6所示。

      

                 图5  RTC测试

      

                  图6  多次执行

2.基于触摸屏的演示例程

1)cdc_cursor例程

lcdc_cursor例程是一个光标在屏幕范围内沿直线移动的例程,当光标移动到屏幕边缘时会沿折射方向继续移动,其执行效果如图7所示。


              图7  光标自由移动

2)lcdc_tft例程

    lcdc_tft例程是一个矩形色块平滑移动例程,当色块移动到屏幕的边缘时会改变色彩并改变移动方向,其执行效果如图8所示。

     

              图8  色块移动效果

3)touch_cursor例程

touch_cursor例程是一个检测光标所处屏幕位置的例程,当触摸屏幕时光标会移动相应位置,并通过串口通讯将坐标位置显示出来,其执行效果如图9和图10所示。

实现该功能处理的关键语句如下:

if ((touch_event == kTouch_Down) || (touch_event == kTouch_Contact))   

{

/* 更改光标位置 */

APP_SetCursorPosition(cursorPosY, cursorPosX);

/* 输出光标位置 */

PRINTF("0x%2x 0x%2x", cursorPosX, cursorPosY);

PRINTF("\r\n");

}


              图9  指定光标位置

      

                 图10 显示光标位置


开发包到哪里下载?

Keil.LPC5400_DFP.2.1.0.pack在官网http://www.keil.com/dd2/Pack/,SDK_2.0_LPC54608J512.zip到网址http://www.nxp.com/search?client=nxp_search_all_results&site=nxp_zhHans&proxystylesheet=nxp_search_style_fe&sort=date%3AD%3AL%3Ad1&oe=UTF-8&ie=UTF-8&ud=1&output=xml_no_dtd&exclude_apps=1&callback=ss_show&lang_cd=zh-Hans&filter=0&getfields=*&baseUrl=%2F%2Fwww.nxp.com%2Fcn%2Fwebapp&SEARCH_OPERATOR=Contains&attempt=-1&rc=1&hl=en&dnavs=&q=lpc54608%20sdk看看。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top