NXP MCU 技术论坛
直播中

指尖◆烟草香

8年用户 42经验值
擅长:嵌入式技术 控制/MCU
私信 关注
[经验]

【NXP LPC54110试用体验】+开发板基本功能之GPIO,流水灯小程序

本帖最后由 指尖◆烟草香 于 2017-8-1 08:20 编辑

    在把开发环境搭建好后,已经迫不及待的要试一试这款芯片基本的操作了。先上一下板子流水灯部分的原理图。
流水灯.png

板子上有八颗LED灯,正好,就拿来做个最经典的流水灯吧。从原理图我们可以看出来,板子的LED灯分别连在了PIO0的15、19、21、22、25、26、29、30这八个脚上,其实有点浪费了哈。这8个发光二极管,其中4个低电平驱动(绿色),4个高电平驱动(红色),要注意这一点,这八个灯的驱动电平不一样。
     下面,我们先初始化一下板子的用到流水灯的这几个引脚。这个函数体在pin_mux.c这个文件内,代码全部粘上太多了,大家自己下载附件去看吧。
  1. void BOARD_InitBootPins(void) {

然后再对板子时钟进行初始化。
  1. void BOARD_InitBootClocks(void)
  2. {
  3.     BOARD_BootClockRUN();
  4. }
这个函数体在也在pin_mux.c这个文件内。
然后对LED的相关引脚进行初始化
  1. void LED_init()
  2. {
  3.         gpio_pin_config_t config_low = {kGPIO_DigitalOutput,0,};
  4.         gpio_pin_config_t config_high = {kGPIO_DigitalOutput,1,};

  5.         CLOCK_EnableClock(kCLOCK_Gpio0);
  6.         GPIO_PinInit(BOARD_INITPINS_LED0_GPIO, BOARD_INITPINS_LED0_PORT, BOARD_INITPINS_LED0_GPIO_PIN, &config_low);
  7.         GPIO_PinInit(BOARD_INITPINS_LED1_GPIO, BOARD_INITPINS_LED1_PORT, BOARD_INITPINS_LED1_GPIO_PIN, &config_low);
  8.         GPIO_PinInit(BOARD_INITPINS_LED2_GPIO, BOARD_INITPINS_LED2_PORT, BOARD_INITPINS_LED2_GPIO_PIN, &config_low);
  9.         GPIO_PinInit(BOARD_INITPINS_LED3_GPIO, BOARD_INITPINS_LED3_PORT, BOARD_INITPINS_LED3_GPIO_PIN, &config_low);
  10.         GPIO_PinInit(BOARD_INITPINS_LED4_GPIO, BOARD_INITPINS_LED4_PORT, BOARD_INITPINS_LED4_GPIO_PIN, &config_high);
  11.         GPIO_PinInit(BOARD_INITPINS_LED5_GPIO, BOARD_INITPINS_LED5_PORT, BOARD_INITPINS_LED5_GPIO_PIN, &config_high);
  12.         GPIO_PinInit(BOARD_INITPINS_LED6_GPIO, BOARD_INITPINS_LED6_PORT, BOARD_INITPINS_LED6_GPIO_PIN, &config_high);
  13.         GPIO_PinInit(BOARD_INITPINS_LED7_GPIO, BOARD_INITPINS_LED7_PORT, BOARD_INITPINS_LED7_GPIO_PIN, &config_high);
  14. }

再来一个简单的延时函数,
  1. void delay(void)
  2. {
  3.     volatile uint32_t i = 0;
  4.     for (i = 0; i < 1000000; ++i)
  5.     {
  6.         __asm("NOP");
  7.     }
  8. }
LED状态控制
  1. GPIO_SetPinsOutput(BOARD_INITPINS_LED0_GPIO, BOARD_INITPINS_LED0_PORT, 1U << BOARD_INITPINS_LED0_GPIO_PIN);
  2.         delay();
  3.         GPIO_ClearPinsOutput(BOARD_INITPINS_LED0_GPIO, BOARD_INITPINS_LED0_PORT, 1U << BOARD_INITPINS_LED0_GPIO_PIN);
这是控制一颗灯的,其余几个一次类推。到这里,程序差不多就可以写完了,这是用库函数来写的,有空的时候琢磨琢磨它的寄存器来试试。
配置好调试器
TIM截图20170731205201.png

下载成功!

TIM截图20170731205438.png

来几张高清效果图看看:

红灯(高电平亮)

P70731-205554.jpg

绿灯(低电平亮)

P70731-205557.jpg

再来张动图看看:

P70731-204931.gif


  然后在附上源码给大家分享一下
LPC54110流水灯.zip (6.13 MB)
(下载次数: 40, 2017-7-31 21:08 上传)

  好了,今天的板子评测就先写到这里了。哈哈,眼睛好累,得去歇一会的。


回帖(6)

李航

2017-8-6 23:59:35
请问一下,keil 用USB怎么烧录?
举报

指尖◆烟草香

2017-8-7 15:26:40
引用: aircraft233 发表于 2017-8-6 23:59
请问一下,keil 用USB怎么烧录?

什么意思?是给这块板子烧录程序吗?
举报

李航

2017-8-12 13:52:32
引用: 指尖◆烟草香 发表于 2017-8-7 15:26
什么意思?是给这块板子烧录程序吗?

恩,找不到门道,直接拉bin文件,又不知道如何生成,想问能不能用keil直接USB烧录?
举报

djk0125

2017-10-11 23:36:13
哪里能找到该板的资料!研究一下
举报

寇东

2017-10-13 10:40:29
引用: aircraft233 发表于 2017-8-6 23:59
请问一下,keil 用USB怎么烧录?

USB MSC方式ISP下载代码时,必须将Boot/ISP跳线设置为USB MSC方式,然后将CN1 USB接口通过USB电缆与个人电脑连接;连接成功后,在电脑资源管理器中虚拟出一个大容量存储设备(可移动磁盘),此时将文件名firmware.bin的下载文件拷贝到可移动磁盘完成ISP下载;之后改变Flash/ISP设置为Flash/Boot,并重新上电运行下载的代码。
举报

张海波

2017-10-19 15:23:15
开发板基本功能之GPIO,流水灯小程序,很好很好!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分