工作繁忙实在是没什么空。
先看了两天文档,了解了NUC120的一些信息,然后看了Ryanhsiung 兄的一个程序,在其基础上,做了些适合自己风格的修改,算是开工了。
其实这篇就是抄啦,只为熟悉NUC120的GPIO基本操作。接触过51、AVR、瑞萨、LPC2103,说实话很不习惯NUC120的GPIO的操作。不过熟悉就好啦~~
以下代码只是一个基于软件延时的流水灯,让助学板上的4颗LED灯依次点亮,连定时器都没用。
此为第一篇,不知道是否太“低俗”而不符合要求,不过呢笔记会一直写下去的,只是会比一般人慢吧。
接下来准备搞一个裸奔的架构,然后在其基础上添加各种功能,再然后这么大个ROM不跑跑OS实在是说不过去,学OS也是申请这块板的主要目的啦。
自己有一个之前在学校用过的1602,端口和助学板上的LCD端口对不上,准备跳跳线再焊焊补补拿来用用,一步步来吧~~
好了,上代码:
main.c:
#include "includes.h"
int main (void)
{
vLED_GPIO_Init();
while(1)
{
vLED_Control(D_PIN_LED1,D_LED_ON); //First LED on
vDelay(); //Delay a while
vAllLedOff(); //All LED off
vLED_Control(D_PIN_LED2,D_LED_ON); //Second LED on
vDelay();
vAllLedOff();
vLED_Control(D_PIN_LED3,D_LED_ON); //Third LED on
vDelay();
vAllLedOff();
vLED_Control(D_PIN_LED4,D_LED_ON); //Fourth LED on
vDelay();
vAllLedOff();
}
}
void vDelay(void)
{
uint32_t DelayTime = 1200000; //About 1s
while(DelayTime--);
}
led.c:
#include "includes.h"
void vLED_GPIO_Init(void)
{
DrvGPIO_Open( E_D_GPLED1, D_PIN_LED1, E_IO_OUTPUT );
DrvGPIO_Open( E_D_GPLED2, D_PIN_LED2, E_IO_OUTPUT );
DrvGPIO_Open( E_D_GPLED3, D_PIN_LED3, E_IO_OUTPUT );
DrvGPIO_Open( E_D_GPLED4, D_PIN_LED4, E_IO_OUTPUT );
vAllLedOff();
}
void vAllLedOff(void)
{
vLED_Control(D_PIN_LED1,D_LED_OFF); //这里我就不用这个初始化,其实
vLED_Control(D_PIN_LED2,D_LED_OFF);
vLED_Control(D_PIN_LED3,D_LED_OFF);
vLED_Control(D_PIN_LED4,D_LED_OFF);
}
void vLED_Control(uint8_t led ,uint8_t status)
{
E_DRVGPIO_PORT e_temp;
switch(led)
{
case D_PIN_LED1:
e_temp = E_D_GPLED1;
break;
case D_PIN_LED2:
e_temp = E_D_GPLED2;
break;
case D_PIN_LED3:
e_temp = E_D_GPLED3;
break;
case D_PIN_LED4:
e_temp = E_D_GPLED4;
break;
default:
return; //防止进入下面的执行程序
}
if(D_LED_OFF == status)
{
DrvGPIO_SetBit(e_temp,led);
}
else
{
DrvGPIO_ClrBit(e_temp,led);
}
}
GPIO By Metalor.rar
(1.43 MB)
|