uTenux——LED驱动讲解

LED驱动讲解,对于一个嵌入式的工程师还是一个刚开是学习相关电子设计的朋友,对于LED的驱动问题应该不甚陌生。我所说的LED驱动并不是类似大功率LED照明的那个驱动,而是简单的控制器对LED的控制驱动。

在uTenuxAT91SAM3S4C开发板上板载了三个LED等,分别位绿色灯、蓝色灯、红色灯。其中红色灯较为特殊,他既是开发板的电源指示灯,又可以由用户控制器亮灭,具体的电路原理我就在这里不在赘述了,不懂的朋友请查阅第二节的简介或参考开发板电路图及EB-SAM3S4C_Usermanual.pdf文档,如果这些都不能解决,您可以联系我,我会尽快的回复您的。

下面就LED的驱动做详细的讲述:

1、 按第三节中的工程模板建立相应的工程,我的工程组织关系如下图所示:

wps_clip_image-5958

2、 对工程进行配置。添加工程头文件的包含路径,设置编译器位—gnu,设置Link等,具体参考第三节的两篇介绍。

3、 编写main.c函数,我的main.c如下:

//--------Include Head------------

#include "board.h"

#include <stdio.h>

//-------Port Defined------

//-------Data Defined-------

//--------Sub Function-------

/*---------------------------------

Description : None

Input : None

Output : None

Others : None

---------------------------------*/

//--------ISR Function----------

//---------Main Function--------

extern int  main (void)

  {

    /* Disable watchdog*/

    WDT_Disable( WDT ) ;

printf(" Hello EM-SAM3S-Kit "); 

printf( " Compiled: %s %s ", __DATE__, __TIME__ ) ;

printf("    -- ^_^ Bruce Lone "); 

    if ( TimeTick_Configure( BOARD_MCK ) != 0 )

{

        printf( "-F- Systick configuration error " ) ;

}

LED_Configure(LED_BLUE);

LED_Configure(LED_RED);

LED_Configure(LED_GREEN);

LED_Set(LED_BLUE);

LED_Clear(LED_RED);

LED_Set(LED_GREEN);

  while(1)

    {

  Wait(100);//该函数是由定时器延时产生的,主要编写其中断函数

  LED_Clear(LED_BLUE);

  Wait(100);

  LED_Clear(LED_GREEN);

  Wait(100);

  LED_Set(LED_BLUE);

  Wait(100);

  LED_Set(LED_GREEN);

    }

  }

涉及到Wait()函数的中断函数编写如下

/*

* FileName : Interrupt.C

* Description : Interrupt Service Route

* Purpose : ISR

* Setup Time : 2012-5-31

* Version : 00.00.00

* Author : Bruce Lone

* Others : None

______________________________________________________

Logs :

______________________________________________________

* 001 :

* Modify : 

* Modification Time :

* Mender :

* Others :

======================================================

*/

//--------Include Head------------

#include "Interrupt.h"

//-------Data Defined-------

//--------Function-------

/*---------------------------------

Description : Time Tick Delay

Input : None

Output : None

Others : None

---------------------------------*/

void SysTick_Handler( void )

{

    TimeTick_Increment() ;

}

4、 做好上面的这些,您就可以编译下载了。

5、 实验现象:(请连接串口线至PC机,PC机请打开串口软件baud = 115200)

您可以看到板载的蓝色灯和绿色灯交替亮灭,串口软件上显示最后编译的时间等信息。

由于本实验相对较为简单,就不做多余的讲解了,如果您有问题可以跟帖或发送信息给我,我会尽快回复您的。谢谢您阅读本文,如果您对本文有任何的异议或意见建议,麻烦您能够联系我,谢谢。

原文地址:https://www.cnblogs.com/BruceLone/p/3348741.html