查看: 5113|回复: 3

[原创] 【LPC54114双核任务一】2、GPIO按键点灯和流水灯

[复制链接]
  • TA的每日心情
    慵懒
    2019-11-22 09:55
  • 签到天数: 179 天

    连续签到: 1 天

    [LV.7]常住居民III

    12

    主题

    1122

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1377
    最后登录
    2019-11-22
    发表于 2017-6-22 20:30:42 | 显示全部楼层 |阅读模式
    本帖最后由 队长shiwo 于 2017-6-22 20:33 编辑

           熟悉了开发板的开发环境之后,对开发板进行一些简单的操作---按键点灯和流水灯。
           万利的LPC54114开发板上带有8个用户可以控制的LED灯(4绿4红LD4/LD5/LD6/LD7是绿灯,低电平点亮,LD8/LD9/LD10/LD11是红灯,高电平点亮,和4个用户按键输入,按键按下IO口检测到的是低电平;

    原理图 led_key_sch.png led_key_sch2.png
    板子上的LED丝印对应IO口:
    LD4<--->PIO0_30、
    LD5<--->PIO0_29、
    LD6<--->PIO0_26、
    LD7<--->PIO0_25、
    LD8<--->PIO0_22、
    LD9<--->PIO0_21、
    LD10<--->PIO0_19、
    LD11<--->PIO0_15,

    按键丝印对应IO口:
    PB2<--->PIO1_8、
    PB3<--->PIO1_9、
    PB4<--->PIO1_10、
    PB5<--->PIO1_11;

    代码:
    1. int main(void)
    2. {
    3.         /* Init board hardware. */
    4.         /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
    5.         CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);

    6.         BOARD_InitPins();
    7.         BOARD_BootClockHSRUN();
    8.         BOARD_InitDebugConsole();
    9.         
    10.         SystemCoreClockUpdate();

    11.   SysTick_Config(SystemCoreClock/1000);//interrupt per 1ms
    12.   
    13.   CLOCK_EnableClock(kCLOCK_Gpio0);//使能GIPO时钟
    14.   CLOCK_EnableClock(kCLOCK_Gpio1);
    15.   
    16.   led_init();
    17.   key_init();
    18.   
    19.    
    20.   while(1)
    21.   {
    22.     if(TicksCount >= 1000)//1s
    23.     {
    24.       TicksCount = 0;
    25.       PRINTF("********************************\r\n");
    26.       PRINTF("hello world !!!.\r\n");
    27.       PRINTF("LPC54110 Sys Clock is %dMhz.\r\n", SystemCoreClock/1000000);
    28.       PRINTF("Welcome to use LPC54114\r\n");
    29.       PRINTF("********************************\r\n");
    30.     }
    31.    
    32.     SystemTimerFun();
    33.    
    34. #ifdef TEST_KEY_LED
    35.     // Button led test schedule               
    36.                 key_led_test();
    37. #endif   
    38.   }
    39.   
    40. }
    复制代码
    1. volatile uint32_t dwLedTicks = 0;
    2. volatile uint32_t dwLedTime  = 200;//200ms   流水灯频率设置

    3. volatile uint32_t TicksCount = 0;

    4. void SysTick_Handler(void)
    5. {
    6.      //dwSysTicks++;
    7.      dwLedTicks++;
    8.      TicksCount++;
    9.      SystemTimer();
    10.      if(dwLedTicks >= dwLedTime)//1s
    11.     {
    12.          dwLedTicks = 0;
    13.          #ifdef TEST_KEY_LED
    14.           runing_light_test();//流水灯测试
    15.           #endif
    16.    
    17.       }
    复制代码
    1. #ifdef TEST_KEY_LED
    2. #define RunLight_Up     1
    3. #define RunLight_Down   2
    4. uint8_t RunLight_Count = 0;
    5. uint8_t RunLight_Direction = 0;
    6. void runing_light_test(void)
    7. {
    8.   switch(RunLight_Count)
    9.   {
    10.     case 0:
    11.       led_on(LD4);
    12.       led_off(LD5);
    13.       led_off(LD6);
    14.       led_off(LD7);
    15.       RunLight_Direction = RunLight_Down;     
    16.       RunLight_Count = 1;
    17.       break;
    18.    
    19.     case 1:
    20.       led_on(LD5);
    21.       led_off(LD4);
    22.       led_off(LD6);
    23.       led_off(LD7);
    24.       if(RunLight_Direction == RunLight_Down)
    25.         RunLight_Count = 2;
    26.       else if(RunLight_Direction == RunLight_Up)
    27.         RunLight_Count = 0;
    28.       break;
    29.    
    30.     case 2:
    31.       led_on(LD6);
    32.       led_off(LD5);
    33.       led_off(LD4);
    34.       led_off(LD7);
    35.       if(RunLight_Direction == RunLight_Down)
    36.         RunLight_Count = 3;
    37.       else if(RunLight_Direction == RunLight_Up)
    38.         RunLight_Count = 1;
    39.       break;
    40.    
    41.     case 3:
    42.       led_on(LD7);
    43.       led_off(LD5);
    44.       led_off(LD6);
    45.       led_off(LD4);
    46.       RunLight_Direction = RunLight_Up;
    47.       RunLight_Count = 2;
    48.       break;
    49.    
    50.     default:
    51.       RunLight_Count = 0;
    52.       led_off(LD4);
    53.       led_off(LD5);
    54.       led_off(LD6);
    55.       led_off(LD7);
    56.       break;
    57.   }        
    58. }

    59. void key_led_test(void)
    60. {
    61.   if(key_value(KEY2_PB2) == 0 )
    62.   {
    63.     led_on(LD8);
    64.   }
    65.   else if(key_value(KEY3_PB3) == 0 )
    66.   {
    67.     led_on(LD9);
    68.   }
    69.   else if(key_value(KEY4_PB4) == 0 )
    70.   {
    71.     led_on(LD10);
    72.   }
    73.   else if(key_value(KEY5_PB5) == 0 )
    74.   {
    75.     led_on(LD11);
    76.   }
    77.   else
    78.   {
    79.     led_off(LD8);
    80.     led_off(LD9);
    81.     led_off(LD10);
    82.     led_off(LD11);
    83.   }
    84. }
    85. #endif
    复制代码



    运行现象
    P70622-193943.gif
    流水灯LD4--->LD5--->LD6--->LD7--->LD6--->LD5--->LD4,按键点灯:PB2--->LD8,PB3--->LD9,PB4--->LD10,PB5--->LD11,
    串口1s打印一次信息: 无标题.png

    工程代码: LPC54114_Proj_MDK.rar (778.3 KB, 下载次数: 33)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-2-7 18:18
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    13

    主题

    126

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1628
    最后登录
    2021-7-13
    发表于 2017-6-25 09:03:43 | 显示全部楼层
    串口不用开启时钟?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2019-4-1 22:48
  • 签到天数: 302 天

    连续签到: 1 天

    [LV.8]以坛为家I

    87

    主题

    7322

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    4631
    最后登录
    2021-1-25
    发表于 2017-11-29 13:55:15 | 显示全部楼层
    看过了                       
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-2-5 17:05
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    28

    主题

    1814

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    5926
    最后登录
    2025-6-26
    发表于 2017-11-29 22:26:21 | 显示全部楼层
    唉 愁人   
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-31 06:38 , Processed in 0.084940 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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