在线时间2 小时
UID3363956
注册时间2017-3-19
NXP金币0
TA的每日心情 | 开心 2017-3-31 13:54 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
新手上路

- 积分
- 48
- 最后登录
- 2017-5-20
|
[LPC54110开发板测试] 二、测试GPIO,点亮LED,串口输出
网上下载的资料有中文的,给学习带来许多便利。而厂家提供的开发案例有Keil和IAR两种,已用过的Keil来学习开发这块板子应该容易一些,于是开始开发环境的设置和配置。
首先安装库文件,打开Keil5.22,单击图21上红框图标,在弹出的界面中联网安装LPC5411x的设备库,见图22。安装好之后就可以配置Keil的Option选项,找重视芯片选项和下载仿真器选项,这些网上已有许多介绍,这里省了。首先开始实验GPIO,点亮LEDx。
参照LPC5411xSCH的pdf文档,见图23,可知LED0~7的对应引脚为PIO0_15、19、21、22、25、26、29、30,先实验LED0~3这4个LED。
打开5411x工程,先将user文件夹下的main.c复制并改名为mainLed.c,保留源文件以便实验出问题可以改回,文件连接了一个board.h文档,打开后可知是配置GPIO的文档,按照我们的首需,将文件的GPIO改为:
//DEFINE GPIO For LED0~3
#define LEDGpio 0
#define LED0 15//PIO0_15
#define LED1 19//PIO0_19
#define LED2 21//PIO0_21
#define LED3 22//PIO0_22
参照board.c中与操作GPIO相关的函数,在mainLed.c主函数中输入代码:
//Variables
uint16_t ledTime=2000;
//Delayer
void delay(int counter){
volatile uint32_t i,j;
for(i=0;i<counter;++i){for(j=0;j<i;j++){;}}
}
//GPIO Initial
void ioInit(void){
//Define LED Pins
Chip_GPIO_SetPinDIR(LPC_GPIO, LEDGpio,LED0,true);
Chip_GPIO_SetPinState(LPC_GPIO,LEDGpio,LED0,false);
Chip_GPIO_SetPinDIR(LPC_GPIO, LEDGpio,LED1,true);
Chip_GPIO_SetPinState(LPC_GPIO,LEDGpio,LED1,false);
Chip_GPIO_SetPinDIR(LPC_GPIO, LEDGpio,LED2,true);
Chip_GPIO_SetPinState(LPC_GPIO,LEDGpio,LED2,false);
Chip_GPIO_SetPinDIR(LPC_GPIO, LEDGpio,LED3,true);
Chip_GPIO_SetPinState(LPC_GPIO,LEDGpio,LED3,false);
}
//ledTest
void ledTest(void){
Chip_GPIO_SetPinOutLow(LPC_GPIO,LEDGpio,LED0);
Chip_GPIO_SetPinOutHigh(LPC_GPIO,LEDGpio,LED1);
delay(ledTime);
Chip_GPIO_SetPinOutLow(LPC_GPIO,LEDGpio,LED1);
Chip_GPIO_SetPinOutHigh(LPC_GPIO,LEDGpio,LED2);
delay(ledTime);
Chip_GPIO_SetPinOutLow(LPC_GPIO,LEDGpio,LED2);
Chip_GPIO_SetPinOutHigh(LPC_GPIO,LEDGpio,LED3);
delay(ledTime);
Chip_GPIO_SetPinOutLow(LPC_GPIO,LEDGpio,LED3);
Chip_GPIO_SetPinOutHigh(LPC_GPIO,LEDGpio,LED0);
delay(ledTime);
}
//MAIN Programes
int main(void){
SystemCoreClockUpdate();
Board_Init();
Chip_GPIO_Init(LPC_GPIO);
ioInit();
while(1){
ledTest();
}
}
//File end
期望程序实现LED0~LED3的轮闪,编译下载后的结果见照片24。问题来了,如法炮制的所有一样的代码,结果LED0就是不亮,LED1~LED3轮闪亮,单独设置也不闪亮,不知是什么问题。期待高手帮忙解决。
接着测试8只LED的轮闪,只是增加了board.h中的LED4~LED7定义和在main中增加几行语句,结果见照片25-1~3。
在安装CMSIS DAT时意外发现在设备管理器中多出了一个串口,看来是USB虚拟串口,本实验的最后就尝试从这个虚拟串口输出数据。在上述代码的变量下增加:
uint32_t js;
在main函数的while循环语句中增加二行:
js++;
printf("JSQ:%d \n\r",js);
结果,连接电脑模拟串口软件可以的到输出的数据,见图26。
|
-
21
-
22
-
23
-
25-1
-
25-2
-
25-3
-
24
-
26
|