查看: 3738|回复: 2

[原创] [学习LPC54114] 实验1 点亮LEDs

[复制链接]
  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2017-4-6 23:07:03 | 显示全部楼层 |阅读模式
    本帖最后由 zhjb1 于 2017-4-6 23:08 编辑

    这次 得到的54114与网友们测试的不一样,没有那些附加板子,只有主板,一开始下载软件和环境不太对口。这块开发板确实长相像Arduino,引脚逻辑标注几乎一样。重新到官网搜索下载开发板的资料进行实验。没有显示屏的附板,只能自己寻摸一块够他用的LCD了。
    搜官网,下载了与这款开发板相关的资料和手册,MANLEY公司提供了中文说明书,可以较为简单地学习资料了。
    首先创建开发平台,为了省事,直接用下载的proj_mdk或proj_iar解压后进行开发。
    非常遗憾的是下载的开发包中的东西与到手的开发板不是完全一样的东西,结果仔细的对比开发板和手册以及sch的pdf文档发现,要是不作较大的改动恐怕做任何实验都会碰钉子的,仅就LED点亮这么个简单的东西几乎就是失败,因为不一样。看图13,14,看board.h:
    #define BOARD_LED_RED_GPIO GPIO
    #define BOARD_LED_RED_GPIO_PORT 0U
    #define BOARD_LED_RED_GPIO_PIN 29U        PIO0_29
    #define BOARD_LED_GREEN_GPIO GPIO
    #define BOARD_LED_GREEN_GPIO_PORT 1U
    #define BOARD_LED_GREEN_GPIO_PIN 10U        PIO0_10
    #define BOARD_LED_BLUE_GPIO GPIO
    #define BOARD_LED_BLUE_GPIO_PORT 1U
    #define BOARD_LED_BLUE_GPIO_PIN 9U        PIO0_9
    显然只有一个是正确的,为了防止烧开发板,采用静态测量的方法——用万用表测试开发板上的8只LED,还有3只是连在11U35,我们不关心他。最后的结果让人大跌眼镜,实际的管脚连接符合图13——SCH图是正确的,8只LED连接逻辑如下,实际的板上印字对应的PIO口罗列如下:
    PIO0_25_LED4        PIO0_26_LED5        PIO0_29_LED6        PIO0_30_LED7——这4个是绿色的LED
    PIO0_15_LED8        PIO0_19_LED9        PIO0_21_LED10        PIO0_22_LED11——这4个是红色的LED
    因此必须更改board.h文档的LED定义,改动1个如下,一共写了到4个,LED1定义如下:
    #define BOARD_LED1_GPIO GPIO
    #define BOARD_LED1_GPIO_PORT 0U
    #define BOARD_LED1_GPIO_PIN 15U
    以下依葫芦画瓢定义到LED4。还需要修改LED、ON、OFF、TOGGLE函数,仅以LED1为例如下:
    #define LED1_INIT(output) GPIO_PinInit(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN,&(gpio_pin_config_t){kGPIO_DigitalOutput, (output)})
    #define LED1_ON() GPIO_ClearPinsOutput(BOARD_LED1_GPIO, BOARD_LED1GPIO_PORT,1U << BOARD_LED1_GPIO_PIN)
    #define LED1_OFF() GPIO_SetPinsOutput(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT,1U << BOARD_LED1_GPIO_PIN)
    #define LED1_TOGGLE() GPIO_TogglePinsOutput(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT,1U << BOARD_LED1_GPIO_PIN)
    LED2~LED4依葫芦画瓢就可以了。经过这些修改我们就可以开始来做lED闪亮的实验。打开原来的main.cpp,下边是更改完的代码:
    #include "board.h"
    #include "fsl_debug_console.h"
    #include "fsl_gpio.h"
    #include "fsl_usart.h"
    #include "pin_mux.h"
    #include <stdbool.h>

    //Delayer
    void delay(int counter){
    volatile uint32_t i,j;
    for(i=0;i<counter;++i){for(j=0;j<i;j++){;}}
    }

    //Main function
    int main(void){
    //CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
    BOARD_InitPins();
    BOARD_BootClockHSRUN();
    BOARD_InitDebugConsole();
    SystemCoreClockUpdate();
    CLOCK_EnableClock(kCLOCK_Gpio0);
    gpio_pin_config_t config={kGPIO_DigitalOutput,LOGIC_LED_OFF,};
    GPIO_PinInit(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN,&(gpio_pin_config_t){kGPIO_DigitalOutput,(LOGIC_LED_OFF)});
    GPIO_PinInit(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PORT, BOARD_LED2_GPIO_PIN,&(gpio_pin_config_t){kGPIO_DigitalOutput,(LOGIC_LED_ON)});
    GPIO_PinInit(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PORT, BOARD_LED3_GPIO_PIN,&(gpio_pin_config_t){kGPIO_DigitalOutput,(LOGIC_LED_OFF)});
    GPIO_PinInit(BOARD_LED4_GPIO, BOARD_LED4_GPIO_PORT, BOARD_LED4_GPIO_PIN,&(gpio_pin_config_t){kGPIO_DigitalOutput,(LOGIC_LED_ON)});
    while(true){
      GPIO_TogglePinsOutput(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, 1U << BOARD_LED1_GPIO_PIN);
      GPIO_TogglePinsOutput(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PORT, 1U << BOARD_LED2_GPIO_PIN);
      GPIO_TogglePinsOutput(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PORT, 1U << BOARD_LED3_GPIO_PIN);
      GPIO_TogglePinsOutput(BOARD_LED4_GPIO, BOARD_LED4_GPIO_PORT, 1U << BOARD_LED4_GPIO_PIN);
      delay(1000);
    }
    }
    代码敲完,编译报一个错是在2个.h文档中的描述:kNONE_to_NONE = 0x80000000U,报错,我想这个地址应该是对的,而不是报错的“int”,没有理他,下载后的结果见照片16。这块开发板的实验可能会比较困难,因为仅仅LED就错了一大堆,其他的呢?不敢想象,走着瞧吧,慢慢来吧。只能对设计者的粗心大意略表不满。
    此实验是在Keil5.22下,下载安装了驱动补丁包完成的。项目设置见图11,12。很想丢一句话,还是给吃了回去。哎!?

    13-SCH的PDF文档

    13-SCH的PDF文档

    14-MANLEY开发板说明书

    14-MANLEY开发板说明书

    15-LED轮闪示意照片

    15-LED轮闪示意照片

    11-项目设置1

    11-项目设置1

    12-项目设置2

    12-项目设置2
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-11-22 09:55
  • 签到天数: 179 天

    连续签到: 1 天

    [LV.7]常住居民III

    12

    主题

    1122

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1377
    最后登录
    2019-11-22
    发表于 2017-6-20 10:56:23 | 显示全部楼层
    赞一个。。。。
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情

    2021-1-28 20:09
  • 签到天数: 317 天

    连续签到: 1 天

    [LV.8]以坛为家I

    61

    主题

    1582

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    9293
    最后登录
    2022-5-12
    发表于 2017-6-21 10:07:39 | 显示全部楼层
    赞一个。。。。
    好好
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-25 07:15 , Processed in 0.086755 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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