查看: 608|回复: 3

[技术] 【赚周年币】技术帖Week1-Day1——LPC824 Breakout之一、点亮LED灯

[复制链接]

24

主题

0

好友

4432

积分

状元

Rank: 6Rank: 6

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 1335 天

    连续签到: 45 天

    [LV.10]以坛为家III

    爱板会员勋章 活跃会员勋章 发帖机器勋章 在线达人勋章

    发表于 2017-1-1 21:50:18 |显示全部楼层
    本帖最后由 toofree 于 2017-1-17 23:28 编辑

        活动拍了一块LPC824开发板,论坛有叫LPC824 Breakout的,在板上丝印名称为LPC824-DIP Board。
        161440oybqvmeacsm4ilis.jpg


        161444liedecn7h9zz8uh8.jpg


        161443y5ann55av6ay7550.jpg


         Flash Magic、 CP2102驱动文件在这里就不罗嗦了,在开箱贴中有。
         [活动] 【LPC824-DIP Board开箱】内附Flash Magic + CP2102驱动
         http://www.nxpic.org/module/forum/thread-608299-1-1.html

         Kei MDK 5 的LPC800系列MCU的器件包从Kei官网下载,这里也附上。
          Keil.LPC800_DFP.1.3.0.rar (9.53 MB, 下载次数: 20)

         在NXP官网下载了样例程序库,是针对LPC812 Max board和LPC824 Max board板的,也一并附上。
          LPC824_Example_Code_Bundle_Keil_r1.0.zip (797.89 KB, 下载次数: 27)

         解压样例程序压缩包,打开工程合集“LPC824_Example_Code_Bundle_Keil_r1.0\Keil_Projects\peripherals_examples.uvmpw”
         首先编译 peripherals_lib和utilities_lib两个工程,生成必要的.lib文件,否则后面编译其它工程的时候会提示缺相应的.lib文件。
        傲游截图20170101210821.jpg


        设置工程 Example_GPIO_Pattern_Match 为主当前激活工程,并编译。编译通过,说明之前的两个.lib文件起作用了。
        傲游截图20170101211200.jpg


        下面我们将以Example_GPIO_Pattern_Match做模板,修改必要的设置开始点灯。
        需要修改一下board.h头文件,因为这里的管脚设置并不是针对我们的LPC824 Breakout来做的。
        傲游截图20170101211523.jpg


        要修改Board.h文件,那么就不得不查看LPC824 Breakout板的原理图,这里也附上。
        lpc8xx_socket.rar (227.84 KB, 下载次数: 13)
        在原理图中可以看到,红、绿、蓝三个LED分别对应PIO0_15、PIO0_16、PIO0_17。
        傲游截图20170101211847.jpg


        下载调试串口的RXD、TXD分别对应PIO0_0、PIO0_4。尽管点灯和串口不大,但是我们一并修改,为了以后方便。
        傲游截图20170101211917.jpg
       

        我们需要修改Board.h中,30到37行内容。
        第38行不要动,对照LPC824应用手册可以找到为什么为设置为31,感兴趣的小伙伴可以看看,或者等我之后写个帖子。
        傲游截图20170101212559.jpg
       

        原内容为:
    // LPC824 Max board#elif TARGET_BOARD == 824
    #define RED    (1<<12)
    #define BLUE   (1<<27)
    #define GREEN  (1<<16)
    #define red_led_port   P0_12
    #define blue_led_port  P0_27
    #define green_led_port P0_16
    #define TARGET_TX P0_7             // For the MBED serial port
    #define TARGET_RX P0_18            // For the MBED serial port
    #define NUM_IOCON_P0_SLOTS 31      // For looping through the pad controls

        修改为:
    // LPC824 Max board
    #elif TARGET_BOARD == 824
    #define RED    (1<<15)
    #define BLUE   (1<<17)
    #define GREEN  (1<<16)
    #define red_led_port   P0_15
    #define blue_led_port  P0_17
    #define green_led_port P0_16
    #define TARGET_TX P0_4             // For the MBED serial port
    #define TARGET_RX P0_0             // For the MBED serial port

    #define NUM_IOCON_P0_SLOTS 31      // For looping through the pad controls
         
         接下来需要修改主文件“Example_GPIO_PatternMatch.c”。
         第54行可看到有一句,  Config_LEDs(RED | BLUE | GREEN);     
         说明程序中已经配置了三个LED灯,我们不需要再对LED初始化。

         那么我们在 while(2) 循环之前,加入我们的点亮LED灯代码。
        LEDs_On(RED);   
        LEDs_On(BLUE);
        LEDs_On(GREEN);
        傲游截图20170101213719.jpg
         

        好了,一切就绪,记得在目标板设置中,勾上生成HEX文件选项。
        傲游截图20170101213833.jpg


        编译生成.HEX文件。
        傲游截图20170101214031.jpg


         用Flash Magic下载生成的“Example_GPIO_Pattern_Match.hex”到LPC824 Breakout板卡。

         下载完固件,按一下RST键,三个灯是不是全点亮了呢,收工。是不是很简单呢!

         有同学会问,为什么不闪灯呢。因为闪灯需要延时,延时分硬件延时和软件延时。硬件有通用定时器和Stick定时器,涉及到其它硬件资源。要软件延时,那么咱们就来个比较精确的延时,精确的软件延时后面帖子介绍。

         具体Flash Magic工具怎么用,这里就不废话了。如果有不会使用Flash Magic的同学,请移步本人帖子。
        [活动] 【赚周年币】技术帖——FlashMagic的使用(基于LPC824-DIP Board)
        http://www.eeboard.com/bbs/thread-58962-1-1.html

        修改后工程文件打包附上,希望各位看官笑纳。
        LPC824_Example_Code_Bundle_Keil_r1.0.rar (1.05 MB, 下载次数: 25)
        文件名与前面的官网库相同,但大小和内容不同




    已有 2 人评分 收起 理由
    EEboard爱板网 + 1 3周发帖养成记 奖励
    loveeeboard + 25

    总评分:  + 26   查看全部评分

    回复

    使用道具 举报

    2

    主题

    0

    好友

    418

    积分

    秀才

    Rank: 3Rank: 3

  • TA的每日心情
    开心
    前天 15:38
  • 签到天数: 86 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2017-2-16 11:35:56 |显示全部楼层
    楼主您好,我通过您的教程已经学会了点灯,我是个初学者,所以想问个问题,也许幼稚,但请您别见笑。问题就是循环while(2)和while(1)有什么区别,两个都实现了效果,但是为什么不用常用的while(1)。嘻嘻
    回复

    使用道具 举报

    24

    主题

    0

    好友

    4432

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 1335 天

    连续签到: 45 天

    [LV.10]以坛为家III

    爱板会员勋章 活跃会员勋章 发帖机器勋章 在线达人勋章

    发表于 2017-2-16 11:58:45 |显示全部楼层
    yangjiaxu 发表于 2017-2-16 11:35
    楼主您好,我通过您的教程已经学会了点灯,我是个初学者,所以想问个问题,也许幼稚,但请您别见笑。问题就 ...

    没有区别。
    while(N),判断N的值为逻辑值,真或假;0为假,非0为真。
    N可以随便写,只要不等于0就是真,就能一直循环。
    可以是,1,2,3,-1,-2,-3,1.5,1.6等等,反正就是非零
    回复

    使用道具 举报

    2

    主题

    0

    好友

    418

    积分

    秀才

    Rank: 3Rank: 3

  • TA的每日心情
    开心
    前天 15:38
  • 签到天数: 86 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2017-2-16 13:11:32 |显示全部楼层
    toofree 发表于 2017-2-16 11:58
    没有区别。
    while(N),判断N的值为逻辑值,真或假;0为假,非0为真。
    N可以随便写,只要不等于0就是真, ...

    谢谢您,我现在还在学,嘿嘿 有帮助真好,感谢您
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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

    手机版|爱板网 |网站地图  

    GMT+8, 2017-7-21 10:36 , Processed in 0.262394 second(s), 17 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部