查看: 3306|回复: 6

[原创] 一个关于LPC11U68开发板的简单使用

[复制链接]
  • TA的每日心情
    开心
    2018-11-17 09:58
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    3

    主题

    253

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2975
    最后登录
    2019-10-21
    发表于 2018-11-22 23:53:51 | 显示全部楼层 |阅读模式
    本帖最后由 creep 于 2018-11-22 23:57 编辑

            
        很幸运赶上了活动的末班车入手了一块LPC11U68开发板,作为一款入门级的开发板非常适合我这样刚接触NXP芯片的新手学习,感谢@NXP管管和中电港萤火工场提供给新手学习NXP芯片的机会。板子小气精致,让人看了就有想要好好学下去的感觉。
                                                                          F6AC3B85A62D20581538F8964A4E9066.png
              板子一到手就跟着论坛上大神分享的帖子升级了板载下载器的固件,首先升级了高大上的jlink固件,升级后可以正常的下载程序但debug的时候总是提示错误,然后就又升级了CMSIS-DAP,终于可以在线硬件调试了。


    接着就在NXP在官网上下载了软件包:http://dwz.cn/pZ9bld4L


                                   fcb221b8-e294-44e5-a0a9-67a7927a562b.png




    软件包里面提供了驱动和比较丰富的例子
                            08d6f7ef-e256-4b07-aaa1-58eb484517ac.png


    官方的例子中为了方便就把开发板外设驱动都编译成了库文件,然后在工程中直接使用即可。但是这样在工程中想要查看一些函数的定义就还要去编译库那个工程中去找了,LIB文件中没法看到,这对新手来说多少有点不太友好,特别是你喜欢刨根问底想要看看底层寄存器怎么实现的。所以下面我们就直接使用外设库源文件建个的工程作为入门吧,待他日熟练了再直接使用编译好的外设lib文件.
    f4c1f1b6-0e69-4816-946b-7b6c583d5646.png


    因为KEIL4还支持LPC11U68,所以就使用了相对而言比较好用的KEIL4来建工程了,LPC11U68外设文件主要再下面几个文件夹里面
    4c382789-eef6-42ed-aa56-f346b7ac7930.png
    将上面的文件加入到工程中并包含文件头路径,然后再添加上mian.c文件,最简单的工程就完成了。


    b5ab805d-282d-40e4-a4cb-2122224e7b70.png
    217bdc7d-26f6-4682-9fcb-305a44f8ac04.png


    然后我们再去下载的软件包里面找个点灯的程序复制到main中,再稍加整理一下,我为了使用延时就使用SysTick中断来实现了。

    从原理图中我们可以看到LPC_USART0直接接到了调试器的虚拟串口,这样我们就可以使用这个串口输出信息了。
    1. <font size="3">int main(void)
    2. {
    3.     SystemCoreClockUpdate();
    4.     Board_Init();
    5.     SysTick_Config(SystemCoreClock / 1000);
    6.     printf("hello,world\n");

    7.     while(1)
    8.     {
    9.         Board_LED_Toggle(1);
    10.         NXP_Delay(1000);
    11.         printf("hello,world\n");
    12.     }
    13. }
    14. </font>
    复制代码
    编译下载就可以看到开发板上让人亮瞎的灯在闪了,我实在没法直视这个灯所以就打开了一个绿色,是不是NXP/FSL特别喜欢用这个酷炫的三色灯大灯。
    串口也会同步输出打印信息。通过一个点灯和输出信息建立一个工程模板,下面就可以细看代码学习具体的时钟外设是怎么设置怎么工作的。
    f935394e-7cb5-4e16-a4d0-9f577af54255.png


    接下来我们就可以学习更多的外设了,NXP的软件包里面提供了非常丰富的例子代码,

    TIM截图20181122233251.png

    每个工程里面都提供了例子的说明和主要的函数实现代码,我们可以将上面的工程里的代码直接复制到我们上面建立的工程的main函数里面,然后编译下载后直接开发板上运行,比如下面的periph_clkout里面的代码复制main里面
    1. int main(void)
    2. {
    3.         CHIP_SYSCTL_CLKOUTSRC_T clkoutClks;

    4.         SystemCoreClockUpdate();
    5.         Board_Init();

    6.         Board_LED_Set(0, false);

    7.         /* Enable and setup SysTick Timer at a 100Hz rate */
    8.         SysTick_Config(SystemCoreClock / 100);

    9.         /* WDT oscillator freq = 0.6MHz divided by 64 = 9.375khz */
    10.         Chip_Clock_SetWDTOSC(WDTLFO_OSC_0_60, 64);

    11.         /* Enable the power to the WDT */
    12.         Chip_SYSCTL_PowerUp(SYSCTL_SLPWAKE_WDTOSC_PD);

    13. #if (CLKOUT_PIO0_1 == 1)
    14.         /* Configure PIN0.1 for CLKOUT */
    15.         Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 1, IOCON_FUNC1);
    16. #endif

    17.         /* Cycle through all clock sources for the CLKOUT pin */
    18.         while (1) {
    19.                 for (clkoutClks = SYSCTL_CLKOUTSRC_IRC;
    20.                          clkoutClks <= SYSCTL_CLKOUTSRC_MAINSYSCLK; clkoutClks++) {

    21.                         /* The CLKOUT source selection may hang if a clock is selected
    22.                            for CLKOUT that is not operational. */

    23.                    /* Setup CLKOUT pin for specific clock with a divider of 1 */
    24.                         Chip_Clock_SetCLKOUTSource(clkoutClks, 24);

    25.                         /* Wait 5 seconds */
    26.                         ticks100 = 0;
    27.                         while (ticks100 < 500) {
    28.                                 __WFI();
    29.                         }
    30.                 }

    31.                 /* Disable CLKOUT pin by setting divider to 0 */
    32.                 Chip_Clock_SetCLKOUTSource(SYSCTL_CLKOUTSRC_MAINSYSCLK, 0);
    33.         }

    34.         return 0;
    35. }
    复制代码
    代码实现输出几个时钟到IO口,

    1. typedef enum CHIP_SYSCTL_CLKOUTSRC {
    2.         SYSCTL_CLKOUTSRC_IRC = 0,                /*!< Internal oscillator for CLKOUT */
    3.         SYSCTL_CLKOUTSRC_MAINOSC,                /*!< Main oscillator for CLKOUT */
    4.         SYSCTL_CLKOUTSRC_SYSOSC = SYSCTL_CLKOUTSRC_MAINOSC,
    5.         SYSCTL_CLKOUTSRC_WDTOSC,                /*!< Watchdog oscillator for CLKOUT */
    6.         SYSCTL_CLKOUTSRC_MAINSYSCLK,        /*!< Main system clock for CLKOUT */
    7. } CHIP_SYSCTL_CLKOUTSRC_T;
    复制代码
    为了使用低端的逻辑分析仪看输出波形,我将时钟进行了24分频,下面48M主时钟和12M内部时钟的输出

    1.png

    TIM截图20181122234010.png

    得益官方提供了详细的代码例子,我们可以很快的上手实现简单特定的功能。通过自己建立外设源码的工程,可以根据库函数的实现来学习了解底层寄存器的具体实现过程,这样能更好的学习和解决问题。


    测试代码:
    periph_led.rar (293.33 KB, 下载次数: 19)
    Hi,I am creep!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3305

    主题

    6553

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32096
    最后登录
    2024-5-8
    发表于 2018-11-23 09:02:01 | 显示全部楼层
    支持下  
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:54
  • 签到天数: 823 天

    [LV.10]以坛为家III

    71

    主题

    2454

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5538
    最后登录
    2024-5-8
    发表于 2018-11-23 11:19:02 | 显示全部楼层
    谢谢分享
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 20:47
  • 签到天数: 1485 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    93126
    最后登录
    2024-5-8
    发表于 2018-11-23 14:13:02 | 显示全部楼层
    支持一下
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2023-7-4 19:10
  • 签到天数: 92 天

    [LV.6]常住居民II

    15

    主题

    222

    帖子

    23

    高级会员

    Rank: 4

    积分
    647
    最后登录
    2024-5-8
    发表于 2018-11-23 22:52:46 | 显示全部楼层
    不错  介绍的很详细  后续多多向你请教
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-3-29 09:54
  • 签到天数: 418 天

    [LV.9]以坛为家II

    21

    主题

    2928

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3307
    最后登录
    2021-4-7
    发表于 2018-11-26 09:14:14 | 显示全部楼层
    赞赞赞
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    12
    最后登录
    2019-10-19
    发表于 2019-10-19 08:31:06 | 显示全部楼层
    3ks,可以入手了
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-9 00:41 , Processed in 0.148848 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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