zoukankan      html  css  js  c++  java
  • 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)

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

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

  • 相关阅读:
    26、实例化需求:团队如何交付正确的软件
    25、华胥引
    24、老子
    23、禅与摩托车维修艺术(又名万里任禅游)
    22、中国哲学简史
    21、人类简史-从动物到上帝(赫拉利)
    20、淘宝技术这十年
    19.验收测试驱动开发
    18. Scrum敏捷软件开发
    17、胡适谈哲学与人生
  • 原文地址:https://www.cnblogs.com/BruceLone/p/3348741.html
Copyright © 2011-2022 走看看