查看: 7876|回复: 13

[分享] [自设LPC845实验板实验] 小测自制板,学习LPC845

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

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2017-12-26 12:03:05 | 显示全部楼层 |阅读模式
    在看到LPC8xx系列已出LPC845芯片,心动就从官网申请了几片芯片,型号为:LPC845M301JDB64——64管脚0.5mm间距密排的芯片,并且参考手册自己设计了一块实验板,见照片11——PCB正面,12——PCB背面。
    焊上各种元器件和插针后见照片13——正面,照片14 ——反面。
    板子好了才发现这块开发板的应用资料奇缺,搜了一堆网站和各种论坛最后下载了一个看似采用LPCXpresso完成的一类似RTC系统的工程——也仅仅只有这个工程运行成功了,其他的工程无法开展试验。
    IAR下缺少LPC845的设备驱动,Keil无法下载其LPC800系列的1.6.0的库文件包而无法使用keil——甚至于下载最新升级版的Keil5.25pre也无可奈何。最后只好在这个下边进行测试。平台为Keil5.23。工程名称为:LPC84x-LPCXpresso。
    由于初次接触这类的系统,打开后的默认编译居然报27个警告,好在警告无碍下载,下载也没有报错,但毫无结果——经查,我的板子采用了P0_00,P0_14,P0_29,P0_31,前3个为1只RGB3色LED,后P0_31是另1只RGBLED的蓝色LED,红色和绿色用于SWDIO,SWCLK引脚检测了。
    遍历文档找到设置LED的文件:LED_LPC84x-LPCXpresso.c,此文档定义了LED,为了实现4线LCD自己又加了4个引脚定义[板子纵列的7孔插孔]:
    #define LED_NUM (8U)//原来是3U,我的板子有4个LED
    const uint32_t led_mask[] = {1U<<0,1U<<14,1U<<29,1U<<31,1U<<16,1U<<17,1U<<18,1U<<19};//Px_y
    const uint32_t led_port[] = {    0,     0,     0,     0,     1,     1,     1,     1};//Portx
    这样P0定义4个连接4只LED为用户测试LED,P1口定义4个模拟串口驱显串口KS0713 LCD。
    原main代码:
    #include <stdio.h>
    #include "cmsis_os2.h"//::CMSIS:RTOS2
    #include "Board_LED.h"//::Board SupportED
    #include "Board_Buttons.h"//::Board Support:Buttons
    #include "RTE_Components.h"//Component selection
    #include "0713.h"//自编的0713驱显模块
    //#include CMSIS_device_header
    #ifdef RTE_Compiler_EventRecorder
    #include "EventRecorder.h"
    #endif
    #ifndef RTE_CMSIS_RTOS2_RTX5
    #error  This example works only with CMSIS-RTOS2 RTX5 implementation!
    #endif
    void delay(int counter);
    volatile int32_t delay_val=100;//延时时间减少到100mS,原为500mS
    int k;//为了刷显ASCII码定义的外联变量
    osThreadId_t tid_thrLED;//Thread id of thread: LED
    osThreadId_t tid_thrBUT;//Thread id of thread: BUT

    //thrLED: blink LED
    void thrLED(void *argument) {
      uint32_t led_max    = 3;//LED_GetCount();0~3代表4只LED
      uint32_t led_num    = 0;
      for (;;) {
        osThreadFlagsWait(0x0001, osFlagsWaitAny ,osWaitForever);
        LED_On(led_num);                                           //Turn specified LED on
        osThreadFlagsWait(0x0001, osFlagsWaitAny ,osWaitForever);
        LED_Off(led_num);                                          //Turn specified LED off
        led_num++;                                                 //Change LED number
        //if (led_num >= led_max) {
        if (led_num > 3) {
       led_num = 0;                                             //Restart with first LED
        }
      }
    }
    //thrBUT: check button state
    void thrBUT(void *argument){
    uint32_t button_msk = (1U << Buttons_GetCount()) - 1;
    for (;;){
      dispAsc();
      osDelay(delay_val);                                        /* Wait */
      while (Buttons_GetState() & (button_msk));                 /* Wait while holding USER button */
      osThreadFlagsSet(tid_thrLED, 0x0001);
      lcdClear();
    }
    }

    //Application main thread
    void app_main (void *argument) {
      tid_thrBUT = osThreadNew (thrBUT, NULL, NULL);//create BUT thread
      tid_thrLED = osThreadNew (thrLED, NULL, NULL);//create LED thread
      for (;;) {}
    }
    //Delayer
    void delay(int counter){
    int32_t i,j;
    for(i=0;i<counter;i++){for(j=0;j<i;j++){;}}
    }
    //main: create tasks and start kernel
    int main (void) {
    //System Initialization
    //SystemInit();
    SystemCoreClockUpdate();
    LED_Initialize();                          //initalize LEDs
    Buttons_Initialize();                      //initalize Buttons
    lcdInit(); //LCD 初始化
    lcdClear(); //清屏
    #ifdef RTE_Compiler_EventRecorder
    EventRecorderInitialize(EventRecordAPI,1U);//Initialize and start Event Recorder
    #endif
    osKernelInitialize();                     //Initialize CMSIS-RTOS
    osThreadNew(app_main,NULL,NULL);         //create application main thread
    if(osKernelGetState()==osKernelReady){osKernelStart();}//start thread execution
    while(1){
      ;
    }
    }
    最后的结果是4只LED循环点亮:红、率、蓝、蓝,LCD刷新显示一次。照片15是拿掉LCD,观察LED轮闪动画;照片16,17是插上LCD显示刷屏ASCII码。

    11

    11

    12

    12

    13

    13

    14

    14

    15

    15

    16

    16

    17

    17
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-1-21 08:52
  • 签到天数: 861 天

    连续签到: 1 天

    [LV.10]以坛为家III

    75

    主题

    2523

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5867
    最后登录
    2025-1-22
    发表于 2017-12-26 12:59:53 | 显示全部楼层
    自己D的很棒,焊工比我强点,845带CAN吗?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2017-12-26 13:35:12 | 显示全部楼层
    leo121_3006061 发表于 2017-12-26 12:59
    自己D的很棒,焊工比我强点,845带CAN吗?

    应该不带CAN,但比824多了Ctouch功能,64引脚的多了PIO1_0~21引脚,PIO0_29~31引脚。由于密脚排列,所以板子28.5mmX50mm,接了外部晶振。谢谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-7-31 08:40
  • 签到天数: 43 天

    连续签到: 1 天

    [LV.5]常住居民I

    299

    主题

    876

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    14830
    最后登录
    2020-3-1
    发表于 2017-12-26 13:36:03 | 显示全部楼层
    赞一个!!!
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-7-5 15:45
  • 签到天数: 664 天

    连续签到: 1 天

    [LV.9]以坛为家II

    42

    主题

    1594

    帖子

    19

    金牌会员

    Rank: 6Rank: 6

    积分
    5618
    最后登录
    2021-12-22
    发表于 2017-12-26 15:42:48 | 显示全部楼层
    赞一个!!!赞一个!!!赞一个!!!赞一个!!!

    放上原理图就更好了!!
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-1-21 08:52
  • 签到天数: 861 天

    连续签到: 1 天

    [LV.10]以坛为家III

    75

    主题

    2523

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5867
    最后登录
    2025-1-22
    发表于 2017-12-26 17:02:41 | 显示全部楼层
    zhjb1 发表于 2017-12-26 13:35
    应该不带CAN,但比824多了Ctouch功能,64引脚的多了PIO1_0~21引脚,PIO0_29~31引脚。由于密脚排列,所以 ...

    感谢回复,比824多了很多东西
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-1-14 20:09
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    5

    主题

    84

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    303
    最后登录
    2021-4-10
    发表于 2017-12-26 22:10:19 | 显示全部楼层
    胡巴,怎么感觉一股烧焦的味道
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-9-15 08:42
  • 签到天数: 1952 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    1

    主题

    4686

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9405
    最后登录
    2023-9-15
    发表于 2017-12-27 05:40:44 | 显示全部楼层
    赞一个!
    今天天气不错!签到!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-17 08:07
  • 签到天数: 273 天

    连续签到: 1 天

    [LV.8]以坛为家I

    74

    主题

    2338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7508
    最后登录
    2021-8-30
    发表于 2017-12-27 09:27:40 | 显示全部楼层
    不错,自己动手做板子是幸福的事
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    30

    帖子

    0

    注册会员

    Rank: 2

    积分
    61
    最后登录
    1970-1-1
    发表于 2017-12-27 19:35:59 | 显示全部楼层
    不错不错,支持一下。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-23 10:53 , Processed in 0.120813 second(s), 33 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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