本文档主要介绍了如何使用MCUXpresso IDE为LPCXpresso1549开发板创建一个新项目。
值得一提的是,官方没有提供针对LPC15xx器件系列的SDK,因此我们使用的是LPCOpen库。
MCUXpresso IDE介绍
MCUXpresso IDE基于Eclipse IDE,并包含业界标准的ARM GNU工具链。它为基于Cortex-M内核的NXP MCU(LPC和Kinetis)提供了易于使用和无限制代码大小的开发环境。 MCUXpresso IDE调试连接支持Freedom、Tower、LPCXpresso和您的定制开发板,并且具有行业领先的开源和商业级的调试仿真器,包括LPC-Link2、P&E和SEGGER。全功能调试器支持SWD和JTAG调试,并且可以直接下载到片上闪存。
当安装了MCUXpresso IDE时,它将包含大多数基于LPC的MCU的预安装的器件支持。这些预安装器件的示例代码由复杂的LPCOpen软件包(和代码包)提供。每个软件包都包含了代码库,以支持MCU功能、LPCXpresso开发板(以及其他一些常见的),同时包含了大量的代码示例和驱动程序。
此外,MCUXpresso IDE的器件支持可以使用免费提供的MCUXpresso SDK2.x软件包进行扩展。这些可以通过简单的“拖放”进行安装,并且使用新的器件知识和示例自动扩展IDE。
MCUXpresso IDE的SDK可以根据需要使用MCUXpresso Config Tools网站上的SDK Builder生成和下载:http://mcuxpresso.nxp.com/
创建一个新项目
在本文档中,我们使用的是LPCXpresso1549开发板(提供了该MCU的LPCOpen项目),同时对于任何LPCXpresso开发板,该过程是相同的。
需要为您的目标MCU /开发板板下载相关的LPCOpen软件包,并将其导入工作区,LPCOpen可以在以下链接中获得:http://www.nxp.com/lpcopen
1. 在“QuickStart panel”面板中选择“New project”,然后打开一个新窗口:
2. 选择期望的开发板。本例中,我们使用的是LPCXpresso1549开发板,然后单击“Next”。
注意:当选择该开发板时,可以从上图中突出显示的部分看到MCU(器件)会自动选择匹配。如果没有匹配的开发板,则可以从预安装的MCU列表中选择所需的MCU。
这个New Project向导支持两种类型的项目:
● 那些针对LPCOpen库
● 独立项目
在本例中,我们将展示创建LPCOpen-C project的步骤。该选项会创建一个简单的C项目,main()函数由一个累加计数器的无限while(1)循环组成。此外,还将包括代码以来初始化开发板和启用LED。
4. 选择项目名称,然后单击“Next”。
5. 在创建基于LPCOpen的项目时,您将看到的第一个选项页面是LPCOpen库选择页面。
必须导入所使用器件的LPCOpen芯片库和可选的LPCOpen Board Library Project,如果还没有这样做,下面的窗口允许导入库。按照以下步骤:
a. 单击“Import…”,将出现一个新窗口,选择要导入的存档文件。这种情况下,导入的项目包含在archive.zip中。在本例中,选择LPCXpresso1549开发板。单击“Open”。然后单击“Next”。
b. 只需选择LPCOpen芯片库和LPCOpen开发板库项目。单击“Finish”。
6. 选择LPCOpen库。单击“Next”。
7. 选择CMSIS库项目。 MCUXpresso IDE中的CMSIS库选项允许您从要创建的项目中选择要连接的CMSISCORE库(如果有)。对于这种情况,我们选择“None”作为默认值。单击”Next”
注意:在大多数情况下,对于新项目,建议使用LPCOpen而不是CMSIS-CORE库项目。
8. 启用SWO跟踪时钟。单击“Next”。
9. 启用CRP的链接器支持。单击“Next”。
10. 某些器件的“Semihosting C Project”向导提供了两个选项,用于配置从Redlib C库中获取的printf系列函数的实现:
● 使用非浮点版本的printf
● 如果您的应用程序不需要将浮点数传递给printf()系列函数,则可以选择printf的非浮点变量。这将有助于减少应用程序的代码大小。
● 对于向导不提供此选项的MCU,可以通过向项目属性添加符号CR_INTEGER_PRINTF来产生相同的效果。
● 使用字符而不是基于字符串的printf
● 默认情况下,printf()和puts()使用malloc()在堆上提供临时缓冲区,以产生要显示的字符串。启用此选项切换到使用这些函数的“character-by-character”版本(不需要额外的堆空间)。这可能是有用的,例如,如果您要重定向printf()来在UART上写出数据 - 因为在这种情况下,创建一个临时缓冲区来存储整个字符串,只在UART上一次打印出一个字符,它是无意义的。
● 对于向导不提供此选项的MCU,可以通过向项目属性添加符号CR_PRINTF_CHAR来产生相同的效果。
本例中,我们将使用默认值。
11. 选择适当的选项后,您可以单击Finish按钮,然后向导将为您创建项目,以及适当的启动代码和简单的main.c文件。
12. 这时,您应该能够构建和调试此项目。
编写我的第一个项目
LPCOpen芯片库(本例中为lpc_chip_15xx)包含一些LPC外设的驱动程序。对于这些示例,我们将使用GPIO驱动程序。
LPCOpen开发板库项目(本例中为lpc_board_nxp_lpcxpresso_1549)包含具有软件API函数的文件,它们提供了一些简单的抽象函数,可以交叉用于多个LPCOpen开发板示例。
board_api.h包含通用的板卡定义,在板卡和器件中交叉共享。所有这些函数都不需要针对特定的电路板实现,但是如果它们被实现,他们应该使用这个API标准。
在使用MCUXpresso和LPCOpen创建一个新项目之后,它创建了一个简单的C项目,该项目初始化开发板,并使用Board_LED_Set功能将LED设置为“On”状态。
在本例中,我们将使用一个按钮来切换一个LED。在LPCXpresso1549开发板上,LED连接到PIO1.1、PIO0.3和PIO0.25引脚。SW1连接到PIO0.17引脚。
函数Chip_GPIO_SetPinDIRInput将引脚配置为输入。
函数Chip_GPIO_GetPinState通过GPIO字节寄存器获取GPIO引脚状态。
函数Board_LED_Set将LED设置为“开”或“关”状态。
完整的代码(使用底部的按钮设置LED状态)。
译者注:本文翻译自https://community.nxp.com/docs/DOC-334959,感谢soledad做出的贡献。如有错漏,敬请指正。
没有评论:
发表评论