【赚周年币】技术帖Week1-Day1——LPC824 Breakout之一、点亮LED灯
#线上活动
5475 人阅读
|
3 人回复
|
2017-01-01
TA的每日心情 | 开心 昨天 00:06 |
|---|
签到天数: 4274 天 连续签到: 3 天 [LV.Master]伴坛终老
司徒
- 积分
- 49119
    

|
|
本帖最后由 toofree 于 2017-1-17 23:28 编辑
活动拍了一块LPC824开发板,论坛有叫LPC824 Breakout的,在板上丝印名称为LPC824-DIP Board。
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官网下载,这里也附上。
在NXP官网下载了样例程序库,是针对LPC812 Max board和LPC824 Max board板的,也一并附上。
解压样例程序压缩包,打开工程合集“LPC824_Example_Code_Bundle_Keil_r1.0\Keil_Projects\peripherals_examples.uvmpw”
首先编译 peripherals_lib和utilities_lib两个工程,生成必要的.lib文件,否则后面编译其它工程的时候会提示缺相应的.lib文件。
设置工程 Example_GPIO_Pattern_Match 为主当前激活工程,并编译。编译通过,说明之前的两个.lib文件起作用了。
下面我们将以Example_GPIO_Pattern_Match做模板,修改必要的设置开始点灯。
需要修改一下board.h头文件,因为这里的管脚设置并不是针对我们的LPC824 Breakout来做的。
要修改Board.h文件,那么就不得不查看LPC824 Breakout板的原理图,这里也附上。
在原理图中可以看到,红、绿、蓝三个LED分别对应PIO0_15、PIO0_16、PIO0_17。
下载调试串口的RXD、TXD分别对应PIO0_0、PIO0_4。尽管点灯和串口不大,但是我们一并修改,为了以后方便。
我们需要修改Board.h中,30到37行内容。
第38行不要动,对照LPC824应用手册可以找到为什么为设置为31,感兴趣的小伙伴可以看看,或者等我之后写个帖子。
原内容为:
// 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);
好了,一切就绪,记得在目标板设置中,勾上生成HEX文件选项。
编译生成.HEX文件。
用Flash Magic下载生成的“Example_GPIO_Pattern_Match.hex”到LPC824 Breakout板卡。
下载完固件,按一下RST键,三个灯是不是全点亮了呢,收工。是不是很简单呢!
有同学会问,为什么不闪灯呢。因为闪灯需要延时,延时分硬件延时和软件延时。硬件有通用定时器和Stick定时器,涉及到其它硬件资源。要软件延时,那么咱们就来个比较精确的延时,精确的软件延时后面帖子介绍。
具体Flash Magic工具怎么用,这里就不废话了。如果有不会使用Flash Magic的同学,请移步本人帖子。
[活动] 【赚周年币】技术帖——FlashMagic的使用(基于LPC824-DIP Board)
https://www.cirmall.com/bbs/thread-58962-1-1.html
修改后工程文件打包附上,希望各位看官笑纳。
文件名与前面的官网库相同,但大小和内容不同
|
评分
-
查看全部评分
|
|
|
|
|
|
|
|
TA的每日心情 | 开心 2025-9-22 14:13 |
|---|
签到天数: 498 天 连续签到: 1 天 [LV.9]以坛为家II
状元
- 积分
- 7130
|
沙发
yangjiaxu
发表于 2017-2-16 11:35:56
|
只看该作者
楼主您好,我通过您的教程已经学会了点灯,我是个初学者,所以想问个问题,也许幼稚,但请您别见笑。问题就是循环while(2)和while(1)有什么区别,两个都实现了效果,但是为什么不用常用的while(1)。嘻嘻  |
|
|
|
|
|
|
|
|
TA的每日心情 | 开心 昨天 00:06 |
|---|
签到天数: 4274 天 连续签到: 3 天 [LV.Master]伴坛终老
司徒
- 积分
- 49119
    

|
板凳
toofree
发表于 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等等,反正就是非零 |
|
|
|
|
|
|
|
|
TA的每日心情 | 开心 2025-9-22 14:13 |
|---|
签到天数: 498 天 连续签到: 1 天 [LV.9]以坛为家II
状元
- 积分
- 7130
|
地板
yangjiaxu
发表于 2017-2-16 13:11:32
|
只看该作者
toofree 发表于 2017-2-16 11:58 ![]()
没有区别。
while(N),判断N的值为逻辑值,真或假;0为假,非0为真。
N可以随便写,只要不等于0就是真, ...
谢谢您,我现在还在学,嘿嘿 有帮助真好,感谢您 |
|
|
|
|
|
|
|
|