阿哲
发表于: 2017-5-15 14:49:22 | 显示全部楼层

在纽伦堡Embedded World 2017 期间,我很幸运地得到了一些LPC800-DIP开发板。为了让大家能够更好的了解该开发板,本文主要介绍了如何在该开发板上创建一个LED指示灯闪烁的应用程序:

blinky-on-lpc800-dip.png


概要

本文主要展示了如何使用Eclipse(MCUXpresso IDE)和NXP LPCOpen库在LPC800-DIP开发板上运行首个LED闪烁程序(在开发板上实现切换LED)。

lpc800-dip-board.png


你需要以下工具:

■    LPC800-DIP开发板或其他LPC8xx开发板,在这种情况下,您需要更改源代码中的LED引脚

■    MCUXpresso IDE V10.0.0 b344

■    Micro USB电缆

■    SWD / JTAG调试器,如LPC-Link2


LPC800-DIP开发板

LPC800-DIP是一个微型开发板,其采用的是NXP LPC824微控制器:

lpc800-dip-board-details.png

它采用的是LPC824M201JHI33(32位Cortex-M0+内核、32 KB闪存、4 KB RAM),并将引脚友好的引出。可以使用SWD或通过Silabs CP2102 UART-USB桥烧写微控制器:按下ISP按钮,我可以通过连接到主机的USB以及FlashMagic实用程序烧写该控制器。


SDK:LPC开发板和LPC芯片项目

开发板上手前,我需要一个软件库或SDK。对于LPC800,NXP提供LPCOpen库。MCUXpresso IDE已经安装了该库:

lpcopen-libraries.png

或者,可以在这里找到他们::http://www.nxp.com/products/soft ... SOFTWARE-FOR-LPC8XX


使用MCUXpresso IDE的“Quickstart”面板中的“Import project(s) from file system…”将库项目导入到我的工作空间中:

import-projects.png

然后浏览LPCOpen存档文件:

C:\ NXP \ MCUXpressoIDE_10.0.0_344 \ IDE \实例\ LPCOpen \ lpcopen_2_19_lpcxpresso_nxp_lpcxpresso_824.zip

select-lpcopen-archive.png

按下一步。提示我选择需要导入的项目。我需要我选择的芯片库:

lpc-chip-library.png

“chip”库正如其名,表示支持给定的芯片。我也可以导入开发板库或示例项目。对于LED闪烁项目,我需要的是芯片库,然后我将会编写自己的LED板级支持。


单击Finish,然后工作区中就会显示相应的芯片库:

chip-library-in-workspace.png


建立项目

接下来为开发板创建一个新项目。我再次使用Quickstart面板上的New Project:

new-project.png

选择LPC824:

lpc824-in-wizard.png

单击Next。选择LPCOpen C Project:

lpcopen-c-project.png

单击Next,并给项目命名:

project-name.png

在接下来的对话框中,它应该会检测我的工作区中存在的芯片库:

lpc-chip-libray-for-project.png

单击Next。在接下来的对话框中,我使用的是默认参数,直到完成向导并在工作区中创建项目:

blinky-project-created.png


原理图和LED

检查电路板的原理图,我可以看到电路板上的三个LED分别连接到PIO0_17、PIO0_16和PIO0_15:

rgb-led-on-lpc800-dip.png

LED的阴极侧连接到微控制器。所以这意味着我必须将引脚设置成LOW,然后点亮LED指示灯(LED为低电平有效)。


GPIO引脚

我将以下内容添加到程序中:

  1. #include "gpio_8xx.h"

  2. /* GPIO pin numbers for LEDs */
  3. #define RED_LED   15
  4. #define GREEN_LED 16
  5. #define BLUE_LED  17
复制代码

这包括GPIO外设的头文件,我已经添加了三个LED使用的GPIO引脚的定义。

gpio-declarations.png


GPIO初始化

要使用GPIO引脚,必须先进行初始化。我在“BoardInit()”函数中执行以下操作:

1.  启用GPIO外设的时钟

2.  将引脚配置为输出引脚

3.  使用高电平初始化。 LED为低电平有效,因此设置成HIGH(或TRUE)将熄灭LED。


以下是我的BoardInit()函数:

added-boardinit.png


延迟

因为我需要延迟LED的闪烁,所以我添加了一个非常简单的延迟程序来消耗CPU周期:

  1. static void delay(void) {
  2.     /* very simply delay routine */
  3.     volatile uint32_t cntr = 0x80000;
  4.     while(cntr>0) { /* burn some cycles */
  5.         cntr--;
  6.         __asm volatile("nop\n");
  7.     }
  8. }
复制代码

added-delay.png


main()函数中的板级初始化

在main()中,我调用BoardInit()来初始化硬件:

added-boardinit-in-main.png


LED闪烁

最后,在main()添加一些代码来执行闪烁。

  1. Chip_GPIO_SetPinState(LPC_GPIO_PORT, 0, RED_LED, true);
复制代码

红色LED指示灯熄灭,并且使用下面代码可以打开LED:

  1. Chip_GPIO_SetPinState(LPC_GPIO_PORT, 0, RED_LED, false);
复制代码

在LED开/关之间,我添加了对延迟程序的调用,以减慢main()中的内容:

  1.    while(1) {
  2.         Chip_GPIO_SetPinState(LPC_GPIO_PORT, 0, RED_LED, true);
  3.         delay();
  4.         Chip_GPIO_SetPinState(LPC_GPIO_PORT, 0, RED_LED, false);
  5.         delay();
  6.         Chip_GPIO_SetPinState(LPC_GPIO_PORT, 0, GREEN_LED, true);
  7.         delay();
  8.         Chip_GPIO_SetPinState(LPC_GPIO_PORT, 0, GREEN_LED, false);
  9.         delay();
  10.         Chip_GPIO_SetPinState(LPC_GPIO_PORT, 0, BLUE_LED, true);
  11.         delay();
  12.         Chip_GPIO_SetPinState(LPC_GPIO_PORT, 0, BLUE_LED, false);
  13.         delay();
  14.         i++ ;
  15.     }
复制代码

added-blinky-in-main.png


构建

在“快速入门”面板中使用“锤子”来构建项目:

build.png

应该构建没有任何错误:-)。


调试

该开发板有SWD / JTAG插头。我喜欢这种方式,不用使用FlashMagic工具编程开发板,因为我可以调试它。但这需要一个SWD / JTAG调试器,像我在这里使用的LPC-Link2。

lpc-link2-on-the-right.png

将SWD电缆连接到LPC800-DIP开发板上的SWD插头。在这种情况下,我在LPC-Link2设置了跳线JP2,所以我从LPC-Link2向开发板供电。如果使用另一个调试器,则可能需要使用微型USB电缆为LPC800开发板供电。


使用快速启动面板中的“蓝色”调试图标启动调试,它应该会识别调试器:

debug.png

按下OK,开始调试开发板:

debugging-the-board.png


总结

LPC800-DIP开发板是一个小型的开发平台,搭载了Cortex-M0微控制器,使其成为小型项目的理想选择。对于LPC8xx系列,没有MCUXpresso SDK。但是MCUXpresso IDE配备了LPCOpen SDK,可以在很短的时间内实现一个可以闪烁的功能。很感谢它有一个SWD调试插头,所以我可以使用我最喜欢的JTAG / SWD调试器和Eclipse。

恩智浦告诉我,LPC800-DIP开发板现在还未出售。恩智浦在德国Embedded World 2017展会上赠送了许多这些电路板,所以您可能会很幸运得到一个开发板,可以用于本文。


参考链接

■    LPC800-DIP Schematics:https://community.nxp.com/commun ... =watches.email.bloghttps://community.nxp.com/commun ... pc800-dip-schematic

■    MCUXpresso IDE网页:http://www.nxp.com/mcuxpresso/ide

■    MCUXpresso IDE社区:http://www.nxp.com/mcuxpresso/ide/forum

■    LPC-Link2调试器:http://www.nxp.com/products/micr ... 0/lpc-link2:OM13054

■    GitHub上的项目:https://github.com/ErichStyger/m ... UXpresso/LPC800-DIP


译者注:本文译自:https://mcuoneclipse.com/2017/05 ... p-lpc800-dip-board/,感谢 Erich Styger 做出的贡献,如有错漏,敬请指正!

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 53 | 回复: 76



手机版|

GMT+8, 2024-12-21 21:09 , Processed in 0.061328 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表