查看: 4681|回复: 1

[原创] 【LPC11U68】建立适合学习库实现的工程模板(附资源)

[复制链接]
  • TA的每日心情
    慵懒
    2019-1-15 13:45
  • 签到天数: 53 天

    连续签到: 1 天

    [LV.5]常住居民I

    1

    主题

    57

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    270
    最后登录
    2025-5-25
    发表于 2018-11-28 13:53:12 | 显示全部楼层 |阅读模式
    本帖最后由 枫雪天 于 2018-11-28 13:53 编辑

    拿到板卡比较晚,再写开箱类的帖子就没有太大意义,在此提供一个适合学习库实现的工程模板,这样大家在学习芯片和库实现的时候,就可方便地直接打开库的源代码,进行详细了解或做进一步修改。
    问题背景:
    官方为了方便大家快速的学习和使用这块LPCXpresso11U68开发板,发布了LPC Open的官方库与大量例程,解压完成后包含以下文件。
    D:.
    ├─freertos                          ---->FreeRTOS操作系统文件
    │  ├─freertos                         ---->FreeRTOS操作系统的源码
    │  └─freertoslpc                     ---->操作系统在LPC11U68芯片上的移植文件
    └─lpc11u6x
        ├─brd_xpresso11u68         ---->LPCXpresso11U68开发板的支持库
        ├─chip_11u6x                    ---->LPC11U68芯片的支持库
        ├─examples_11u6x            ---->基于两个库的例程
        └─prj_xpresso11u68          ---->基于两个库的例程工程
            ├─iar                              ---->IAR IDE环境下的工程
            ├─keil                             ---->Keil IDE环境下的工程
            └─lpcxpresso                  ---->LPCXpresso IDE环境下的工程

    我们随便打开一个基本闪烁灯例程periph_blinky。
    periph_blinky工程.png
    可以发现使用的是已经编译好的lib库文件,库文件虽然适合快速编译,却不适合在初学库的时候查看具体的代码实现,所以,我们制作需要一个可以直接查看源码实现的工程模板,以方便学习查看库的具体实现。

    实现步骤:
    1. 在 lpcopen_3_03_keil_iar_lpcxpresso_11u68\lpc11u6x\prj_xpresso11u68\keil文件夹下建立一个新的文件夹,将其命名为board_lpcxpresso_11u68_template。
    新建工程文件夹.png
    2. 进入board_lpcxpresso_11u68_template文件夹,并在其下分别建立 inc、src、prj三个文件夹,分别为头文件夹、源文件夹、工程文件夹。
    新建工程文件夹2.png

    3. 在inc文件夹下建立 board、chip、user三个目录,分别作为板卡支持库头文件、芯片库头文件、用户自定义头文件所在文件夹。
        将 lpcopen_3_03_keil_iar_lpcxpresso_11u68\lpc11u6x\chip_11u6x\inc 下的所有头文件复制到chip文件夹下;
        将lpcopen_3_03_keil_iar_lpcxpresso_11u68\lpc11u6x\brd_xpresso11u68\inc 下的所有头文件复制到board文件夹下。
    4. 在src文件夹下建立 board、chip、startup、user三个目录,分别作为板卡支持库源文件、芯片库源文件、启动文件、用户自定义源文件所在文件夹。
        将 lpcopen_3_03_keil_iar_lpcxpresso_11u68\lpc11u6x\chip_11u6x\src 下的所有源文件复制到chip文件夹下;
        将lpcopen_3_03_keil_iar_lpcxpresso_11u68\lpc11u6x\brd_xpresso11u68\src 下的所有源文件复制到board文件夹下;
        将lpcopen_3_03_keil_iar_lpcxpresso_11u68\lpc11u6x\chip_11u6x\startup 下的所有源文件复制到startup文件夹下;
        为了让工程模板有基本闪烁灯功能,将lpcopen_3_03_keil_iar_lpcxpresso_11u68\lpc11u6x\examples_11u6x\periph_systick\src 下的 systick.c 文件复制到user文件夹下,并重命名为 main.c。
        至此,所有文件的复制工作就完成了。
    工程模板下的所有文件夹结构为
    D:.
    ├─inc
    │  ├─board
    │  ├─chip
    │  └─user
    ├─prj
    │  ├─Listings
    │  └─Objects
    └─src
        ├─board
        ├─chip
        ├─startup
        └─user

    5. 下面建立Keil工程,打开Keil程序,选择 Project->New uVison Project建立新的工程,在prj文件夹下新建名为board_lpcxpresso_11u68_template.uvprojx的工程文件。

    6. 配置Device项,选择LPC11U68JBD100芯片,在Search下输入LPC11U68JBD100可快速筛选目标。
    选择芯片.png
    若此时Keil仍未安装NXP芯片支持,可以在软件中打开Package Installer,选择File->Import,打开官方提供的“Keil.LPC1100_DFP.1.4.0.pack”文件,即可安装NXP LPC1100系列芯片的支持。
    安装包.png

    7. 选择完芯片后会自动跳出 Manage Run-Time Environment 配置界面,这里什么都不选,点Cancel关闭。
    运行时.png
    8. 配置C/C++项
        ① 在Define下输入CORE_M0PLUS;
        ② 在Include Paths下分别选择 ..\inc\board、 ..\inc\chip、 ..\inc\user三个文件夹,含义就是指明头文件所在的文件夹。

    9. 配置Asm项,在Define下输入NO_CRP。

    10. 配置Debug项
        ① 选择右侧的硬件仿真器 J-LINK/J-Trace Cortex
    jlink.png
        ② 点击Settings,详细配置仿真器。
        将ort选择为SW,即使用SWD (Serial Wire Debug)仿真模式,若此时已经将板载仿真器配置为J-link模式并连接电脑,则会识别出芯片。
        将板载仿真器配置为J-link模式的方式在网友“toofree”的帖子LPC11U68开发板】——2、仿真器刷J-Link固件+读擦写11U68固件”中有详细教程,不再赘述。
    配置仿真器.png
    在Flash Download选项卡下,勾选 Reset and Run,这样烧写完毕后芯片会自动复位执行新下载的程序,无需再手动复位。
    Reset.png

    11. 向工程中添加代码文件
    点击下图所示图标,打开项目文件管理器。
    管理.png
    修改并新加条目为以下形式,通过 “Add Files...” 按钮分别添加src下的board、chip、user文件夹下的所有C文件到对应的src_board、src_chip、src_user中,将src\startup文件夹下的keil_startup_lpc11u6x.s、sysinit.c添加到src_user中。
    管理2.png
    选择“OK”完成配置,左侧出现各个文件。
    文件.png
    至此,整个工程的配置全部结束。
    12. 编译工程
    编译.png
    首次编译,会有 0 Error(s), 2 Warning(s).,程序员不能忍!
    警告分别为
    错误1.png
    错误2.png
    点击第一个警告“..\src\chip\adc_11u6x.c(115): warning:  #550-D: variable "save_ADC_CTRL"  was set but never used”,进入adc_11u6x.c。
    发现“save_ADC_CTRL”变量被定义却未使用,使用个小trick解决,在“save_ADC_CTRL = pADC->CTRL;”语句下加一句“save_ADC_CTRL = save_ADC_CTRL;”,警告解决。
    解决1.png
    第二个警告“..\src\user\main.c(79): warning:  #111-D: statement is unreachable”,进入main.c。
    由于语句“return 0;”前的while(1)进入死循环,使得“return 0;”语句得不到执行,将主函数的“return 0;”注释掉,警告解决。
    解决2.png
    再次编译, 0 Error(s), 0 Warning(s),完美!

    13. 烧写测试
    使用USB线连接LPCXpresso11U68开发板,点击“Download”按钮,开始烧写。
    烧写1.png
    TIM图片20181128130715.jpg
    板载LED闪烁起来,全部完成!


    board_lpcxpresso_11u68_template.rar

    1.73 MB, 下载次数: 11, 下载积分: 威望 1

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3930

    主题

    7550

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    40090
    最后登录
    2025-8-29
    发表于 2018-11-29 08:49:20 | 显示全部楼层
    谢谢楼主的分享
    qiandao qiandao
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-31 06:57 , Processed in 0.079851 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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