查看: 1367|回复: 0

LPC54608开发板基本例程的测试

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2017-3-24 09:00:13 | 显示全部楼层 |阅读模式
    分享到:
    在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采样
    1)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 显示光标位置
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-21 11:02 , Processed in 0.114288 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.