NXP MCU 技术论坛
直播中

刘天

13年用户 132经验值
擅长:微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件
私信 关注
[经验]

【NXP LPC54110试用体验】LED灯

LED
象棋小子    1048272975
嵌入式教程中LED灯以及程序教程中的”Hello world”都有其特殊的意义,意味着入门。此处以LED灯驱动介绍LPC5411x的工程开发流程。
1. 官网资料
从www.nxp.com下载对应的LPC5411x开发资料,主要是芯片用户数据手册以及对应芯片的软件开发包(sdk),选择针对MDK平台,对应芯片为LPC54114J256,下载SDK_2.2.1_LPC54114J256.zip。软件包里包含了芯片驱动,板级应用示例,移植好的第三方软件等等,具有非常重要的参考价值。
万利的LPC5411x开发板使用了板载的调试器,基于LPC11U35芯片,也可以从NXP官网下载对应LPC11U35的调试器固件以及虚拟串口驱动,对应的下载文件为LPC11Uxx-Debug-Probe-VCOM.zip。可以通过按住复位键,连接调试器u***(CN1),把下载文件中的固件firmware.bin替换掉开发板原来的固件,即可实现更新。
2. MDK工程
下载的软件开发包是基于MDK5的,里面的工程例程可以通过MDK5直接打开。sdk包中包含了devices/LPC54114文件夹,该文件夹包含了外设驱动源码、LPC54114的启动代码、链接文件等等,这部分的源码是工程开发的基础,应加入到工程。此处以MDK4介绍LPC5411x开发工程的完整搭建。
a 新建工程,选择Cortex-M4 FPU。
1.png
                              
b 按照sdk目录,创建LCP54114、LCP54114/utilities、LCP54114/ARM、LCP54114/drivers目录存放sdk源码。其中LPC54114目录存放设备特定配置代码system_LPC54114_cm4.c,LCP54114/utilities目录存放串口调试工具代码fsl_debug_console.c,LCP54114/arm目录存放LPC54114启动代码startup_LPC54114_cm4.s和功耗控制库文件keil_lib_power.lib,LCP54114/drivers目录存放LPC54114芯片外设驱动代码。
2.png
c 加入用户代码,创建Apps目录,从sdk中拷贝board.c、clock_config.c、pin_mux.c这三个板级代码到Apps目录。NXP的sdk板级代码中,把板级初始化代码放在board.c,把时钟配置代码放在clock_config.c,把引脚配置代码放在pin_mux.c中。在Apps目录中加入main.c,实现LED灯的闪烁驱动。
3.png
main.c的LED闪烁驱动源码如下
#include "board.h"
#include "fsl_debug_console.h"
#include "fsl_gpio.h"
#include "pin_mux.h"
#include
__asm void Delay_ms(unsigned int nCount)
{
0
              ldr  r1, =24000 // arm clock = 96000000hz
1
              subsr1, r1, #1
              bne  %B1
              subsr0, r0, #1
              bne  %B0
              bx    lr
}
int main(void)
{
    uint32_tport_state = 0;
    /* Define theinit structure for the output LED pin*/
   gpio_pin_config_t led_config = {
       kGPIO_DigitalOutput, 0,
    };
    /* Board pin,clock, debug console init */
    /* attach 12MHz clock to FLEXCOMM0 (debug console) */
   CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
    /* enable clockfor GPIO*/
   CLOCK_EnableClock(kCLOCK_Gpio0);
   CLOCK_EnableClock(kCLOCK_Gpio1);
   BOARD_InitPins();
   BOARD_BootClockFROHF96M();
   BOARD_InitDebugConsole();
    /* Print a noteto terminal. */
   PRINTF("rn GPIO Driver examplern");
    /* Init outputLED GPIO. */
   GPIO_PinInit(GPIO, 0, 15, &led_config);
   GPIO_WritePinOutput(GPIO, 0, 15, 0);
   GPIO_PinInit(GPIO, 0, 19, &led_config);
   GPIO_WritePinOutput(GPIO, 0, 19, 0);
    GPIO_PinInit(GPIO,0, 21, &led_config);
   GPIO_WritePinOutput(GPIO, 0, 21, 0);
   GPIO_PinInit(GPIO, 0, 22, &led_config);
   GPIO_WritePinOutput(GPIO, 0, 22, 0);
   GPIO_PinInit(GPIO, 0, 25, &led_config);
   GPIO_WritePinOutput(GPIO, 0, 25, 1);
    GPIO_PinInit(GPIO,0, 26, &led_config);
   GPIO_WritePinOutput(GPIO, 0, 26, 1);
   GPIO_PinInit(GPIO, 0, 29, &led_config);
   GPIO_WritePinOutput(GPIO, 0, 29, 1);
   GPIO_PinInit(GPIO, 0, 30, &led_config);
   GPIO_WritePinOutput(GPIO, 0, 30, 1);  
    while (1) {
              GPIO_TogglePinsOutput(GPIO,0, 1u << 15);
              GPIO_TogglePinsOutput(GPIO,0, 1u << 21);
              GPIO_TogglePinsOutput(GPIO,0, 1u << 25);
              GPIO_TogglePinsOutput(GPIO,0, 1u << 29);
              Delay_ms(1000);        
              GPIO_TogglePinsOutput(GPIO,0, 1u << 19);
              GPIO_TogglePinsOutput(GPIO,0, 1u << 22);
              GPIO_TogglePinsOutput(GPIO,0, 1u << 26);
              GPIO_TogglePinsOutput(GPIO,0, 1u << 30);
              Delay_ms(1000);
    }
}
d 工程设置编译完成后用fromelf命令生成二进制可执行代码firmware.bin,LPC5411x在启动时会对用户代码进行校验,只有合法的镜像才会执行,用checksum.exe对MDK编译生成的firmware.bin进行校验和的更正,用于二进制可执行代码的直接烧录。
4.png
e 工程设置编译器选项,预定义CPU_LPC54114J256BD64_cm4,用于sdk源码的编译要求,加入头文件定义,用--c99进行编译。
5.png
f 工程设置链接器,用LPC54114J256_cm4.scf分散加载文件。
6.png
g 工程设置调试器/烧录器,LPC54110开发板板载了CMSIS-DAP调试器。
7.png
对CMSIS-DAP Debugger进行设置
8.png
代码烧录设置,把LPC5411x_256.FLM烧录文件拷贝到MDK4安装目录 ARMFlash下,在Add选项下选择LPC5411x IAP 256kB Flash,其中LPC5411x_256.FLM为LPC5411x的IAP烧录代码实现,源码可以参考附件。设置好后,可以直接在MDK4下用调试器直接烧录代码。
9.png
h 编译,成功后会在工程目录生成可以直接烧录运行的二进制可执行代码firmware.bin。
3. 烧录运行
设置好调试器烧录后,可以用烧录器直接下载代码并运行。
设置成u***启动,连接CN3,LPC5411x的u***通讯口,ISP会虚拟出一个存储设备(LPC5411x内部flash),里面有一个firmware.bin的文件,即为用户程序,可以把firmware.bin文件删除,重新把新的用户程序firmware.bin拷贝到存储设备中。设置成flash启动,重新上电即可运行更新的代码。
设置成串口启动,配合NXP提供的FlashMagic工具,用串口进行代码下载。
4. 附录
此处以MDK4简单介绍LPC5411x工程开发的搭建过程,这对于其他编译集成环境(IAR、GCC等)都是类似的。
附件为基于MDK5的LPC54114J256官方sdk源码包SDK_2.2.1_LPC54114J256.zip,板载调试器官方固件以及串口驱动包LPC11Uxx-Debug-Probe-VCOM.zip,LPC5411x的IAP烧录源码工程以及烧录文件LPC5411x_256.FLM,基于MDK4的LED灯驱动工程,LPC5411x镜像校验码生成工具checksum.exe的win32源码。
https://pan.baidu.com/s/1qXJDMlm

回帖(3)

王栋春

2017-10-9 13:09:20
围观一下                           
举报

houjue

2017-10-10 08:03:22
写的较详细,帮顶~~~!!!!!
举报

huihui163

2017-10-11 14:46:39
SDK_2.2.1_LPC54114J256.zip这个我怎么再官网找不到呢
举报

更多回帖

发帖
×
20
完善资料,
赚取积分