TA的每日心情 | 无聊 2015-8-21 16:18 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
|
上一次我们鉴赏了开发板的硬件设计,很有大家风范,但是不怎么接地气。我仔细地看了下原理图,除了电源指示灯(竟然还是个绿的LED…)外,就一个可以软件驱动LED(蓝色,试过了),连个跑马灯都跑不起来。于此我们只能做一个呼吸灯的实验了。
开发板没有提供电源啊,幸好通过Mini USB可以直接供电,插上USB接口以后,电源指示灯D6就亮起来了,这里微微的吐下槽,应该用双掷开关做控制的,如下图1所示:
图1
我公司一般用的是IAR做嵌入式开发的,所以这里我们就用IAR来建立工程,运行跑马灯吧。
此处IAR的安装、破解(请支持正版),J-Link安装关联就不做详细解说了,相信用过的人都是手到擒来。
等IAR顺利安装完毕后,打开软件,如下图2所示:
图2
选择New->Workspace,选择Project->Add New Project,选择C->main,点击Ok,选择工工程的所在目录,名字就命名为Led,如下图3所示,点击保存,工程就建立好了。
Figure 3
接下来我们添加官方提供的基于CMSIS规范编写的内核级和芯片级代码(这个当然不能我们自己写了,自己可以优化)。
本次我们需要的源码如下:
- 1.startup_LPC43xx.s 中断向量表文件,也定义了复位中断执行函数,复位中断执行函数如下图4所示,可以看到和STM32的启动文件差异很大啊,直接就初始化堆栈然后运行main函数了。
- 1.lpc43xx_scu.c 引脚功能配置函数,此处我们要配置引脚为GPIO功能。
- 2.lpc43xx_gpio.c 对GPIO口进行功能配置,此处我们要把GPIO口配置为输出功能。
添加完以后,如下图5所示:
Figure5
接下来我们开始配置工程,依次如下图所示,先是图6,配置目标芯片为LPC4357_M4。
Figure6
接下来我们配置包含的.h文件,我为了方便,把官方提供的源码包的.h文件都复制进来了,其中包含了内核级、芯片级和一些通用方法的申明和定义。别忘了预定义里面定义CORE_M4,否则会出现如图8所示的错误。
Figure 7
Figure8
接下来我们配置调试下载器为J-Link,点击OK,保存,会提示保存工作空间,名字也是Led吧,如图10所示。
Figure9
Figure 10
主函数业务逻辑如下所示:
#include "lpc43xx_gpio.h"
#include "lpc43xx_scu.h"
#include "lpc43xx_cgu.h"
/*
*/
// D13, PE_7, GP7[7]
#define LEDM_BIT 7
#define LEDM_PORT 7
/*
*/
static void Led_Init(void)
{
scu_pinmux( 0x0E ,7 , MD_PDN, FUNC4 );
GPIO_SetDir( LEDM_PORT, (1 << LEDM_BIT), 1 );
}
/*
*/
void Delay(uint32_t time)
{
volatile uint32_t tick;
while(time--)
{
tick = 1000000;
while(tick--);
}
}
/*
*/
int main()
{
Led_Init();
while(1)
{
Delay(5);
GPIO_ClearValue(LEDM_PORT, (1<<LEDM_BIT));
Delay(5);
GPIO_SetValue(LEDM_PORT, (1<<LEDM_BIT));
}
}
这里我们详细讲下,开发板的LED连接了PE_7,通过官方提供的文档LPC4357_53_37_33 Summary.pdf里面我们可以看到如图11所示,PE7的PIO为功能4,配置为下拉模式,对应代码scu_pinmux( 0x0E ,7 , MD_PDN, FUNC4 ),GPIO的编号为Port7、Pin7,配置为输出模式,对应代码GPIO_SetDir( LEDM_PORT, (1 << LEDM_BIT), 1 )。
Figure 11
编译完以后,点击Download and Debug,选择全速运行,就可以看到呼吸灯了。 |
|