查看: 1487|回复: 1

[原创] 【LPC11U68开发板】+ 4、GPIO驱动LED

[复制链接]
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 1319 天

    [LV.10]以坛为家III

    124

    主题

    2833

    帖子

    31

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    7578
    最后登录
    2024-5-5
    发表于 2018-11-8 15:35:00 | 显示全部楼层 |阅读模式
            学习GPIO端口的使用,通过驱动LED的例程来了解GPIO的设置。
        一、硬件部分:

            LED对应 的三个端口PIO2_16, PIO2_17和PIO2_18。
             1.png
       
        二、软件部分:


            2.1、主程序
            int main(void)
            {
            unsigned int cn=0;
           
            LED_Init();


            while (1)
            {
                    LED_RED(1);
                    for(cn=0;cn<5000000;cn++);
                    LED_RED(0);
                    for(cn=0;cn<5000000;cn++);
            }


            return 0;
            }
           2.2、led.c
            void LED_Init(void)
        {
            Chip_GPIO_Init(LPC_GPIO);                                 //初始化GPIO
            Chip_GPIO_SetPinDIROutput(LPC_GPIO, 2, 16);         //PIO2_16 == GREEN
            Chip_GPIO_SetPinDIROutput(LPC_GPIO, 2, 17);     //PIO2_17 == RED
            Chip_GPIO_SetPinDIROutput(LPC_GPIO, 2, 18);     //PIO2_18 == BLUE
            Chip_GPIO_SetPinState(LPC_GPIO, 2, 16, true);     //PIO2_16默认输出1
            Chip_GPIO_SetPinState(LPC_GPIO, 2, 17, true);     //PIO2_17默认输出1
            Chip_GPIO_SetPinState(LPC_GPIO, 2, 18, true);     //PIO2_18默认输出1
        }
            程序中用到的函数:
            Chip_GPIO_Init(LPC_GPIO);
            /* Initialize GPIO block */
            void Chip_GPIO_Init(LPC_GPIO_T *pGPIO)
            {
                   Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_GPIO);    //使能GPIO端口时钟
            }
    Chip_GPIO_SetPinDIROutput(LPC_GPIO, 2, 16);     //设置GPIO端口方向
            STATIC INLINE void Chip_GPIO_SetPinDIROutput(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
            {
                pGPIO->DIR[port] |= 1UL << pin;
            }
    手册中的定义:
    201.png
            Chip_GPIO_SetPinState(LPC_GPIO, 2, 16, true);
            STATIC INLINE void Chip_GPIO_SetPinState(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool setting)
            {
                pGPIO->B[port][pin] = setting;
            }
            手册中的定义:
             202.png
            2.3、led.h
            #define LED_RED(n)           ( n?Chip_GPIO_SetPinState(LPC_GPIO, 2, 17, true) : Chip_GPIO_SetPinState(LPC_GPIO, 2, 17, false) )
              #define LED_GREEN(n)         ( n?Chip_GPIO_SetPinState(LPC_GPIO, 2, 16, true) : Chip_GPIO_SetPinState(LPC_GPIO, 2, 16, false) )
              #define LED_BLUE(n)   ( n?Chip_GPIO_SetPinState(LPC_GPIO, 2, 18, true) : Chip_GPIO_SetPinState(LPC_GPIO, 2, 18, false) )
            
        三、执行结果:


           板子上D1红色闪烁显示。








         


    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3305

    主题

    6553

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32096
    最后登录
    2024-5-8
    发表于 2018-11-9 11:22:27 | 显示全部楼层
    很棒
    签到签到
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-8 17:51 , Processed in 0.111390 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表