Hướng dẫn: Làm mờ với bảng NXP LPC845-BRK


Hoàng Phi Hải
8 tháng trước
Hữu ích 2 Chia sẻ Viết bình luận 0
Đã xem 2846

The NXP LPC845-BRK board is a sub-$6 breadboard-friendly development board with an ARM Cortex-M0+ on it. This tutorial is about developing a ‘blinky’ on it using MCUXpresso.

Binky on NXP LPC845-BRK Board

This tutorial goes through the tool installation and basics of implementing a blinky with MCUXpresso. It should give you a starting point for your own application on that board.

Installation

For this tutorial, we need:

Download the NXP MCUXpresso IDE from http://www.nxp.com/mcuxpresso/ide and install it with the default options.

Go to http://mcuxpresso.nxp.com/ and select the LPC845 SDK (there is no SDK for the board available yet). I recommend that you configure the SDK with all available software components.

SDK for LPC845

Start the IDE (you can use the default workspace) and import the SDK (zip file) with drag and drop into the ‘Installed SDKs’ view:

SDK for LPC845

New Project

Create a new project:

Select the LPC845 and press Next:

LPC845

Select the LPC845M301JBD48 for the Device package. Because we are going to use GPIO for the LEDs on the board, make sure that this driver is included. Then, press Finish:

SDK Wizard

With this, we have a blinky project:

Blinky Project Created

LED Pins

Next, we configure the pins for the LED on the board. From the schematics, we get this information:

  • Green on PIO1_0
  • Blue on PIO1_1
  • Red on PIO1_2

GPIO RGB LED Pins on LPC845-BRK

The pins need to be muxed as GPIO output pins. Select the project and open the Pins tool:

Open Pins Tool

Configure PIO1_0, PIO1_1, and PIO1_2 as GPIO pins. The easiest way is to double-click on the GPIO cell entries:

Configured LED GPIO Pins

Add Identifiers to the pins, for example, LEDG, LEDB, and LEDR. We will use #defines created for the pins later in our code:

Identifiers for the Pins

That’s it. Update the project sources with our changes:

Update Project

It asks to confirm the changes. Press OK.

Updating Project

Switch back to the Develop Perspective (if not done automatically).

Develop Perspective

All the settings are stored in a .mex file. I can double-click on that file later to open the settings again:

MEX File

Ungating Clocks

For the LEDs, we are using the GPIO port 1, for which we have to ungate the clocks first; otherwise, the GPIO pins won’t work.

Add the following to the includes:

#include "fsl_gpio.h"


Add the following line to ungate the clocks:

GPIO_PortInit(GPIO, 1); 
/* ungate the clocks for GPIO_1 */


Ungating GPIO 1

Configuring GPIO Pins

Next, we have to configure the GPIO pins as output pins with an initial HIGH (1) value. Add the following configuration to your code:

/* configuration for LOW active GPIO output pin */
static const gpio_pin_config_t configOutput = {
 kGPIO_DigitalOutput,  /* use as output pin */
 1,  /* initial value */
};


Và khởi tạo tất cả các chân với cấu hình đó:

/* initialize pins as output pins */
GPIO_PinInit(BOARD_INITPINS_LEDR_GPIO, BOARD_INITPINS_LEDR_PORT, BOARD_INITPINS_LEDR_PIN, &configOutput);
GPIO_PinInit(BOARD_INITPINS_LEDG_GPIO, BOARD_INITPINS_LEDG_PORT, BOARD_INITPINS_LEDG_PIN, &configOutput);
GPIO_PinInit(BOARD_INITPINS_LEDB_GPIO, BOARD_INITPINS_LEDB_PORT, BOARD_INITPINS_LEDB_PIN, &configOutput);


Lưu ý rằng tôi đang sử dụng Mã định danh ( LEDG , LEDBLEDR ) trong các macro tôi đã xác định trước đó trong công cụ Ghim .

GPIO Ban đầu

Sự chậm trễ

Để làm chậm độ mờ của đèn LED, hãy thêm chức năng trì hoãn vào mã:

static void delay(void) {
  for(int i=0;i<100000;i++) {
    __asm("nop");
  }
}


Sự chậm trễ

Mã Blinky

Cuối cùng, thêm một số mã mờ vào ứng dụng. Mã bên dưới sẽ bật và tắt mỗi đèn led với độ trễ ở giữa:

for(;;) { /* blinky, blinky, blinky! */
  /* red */
  GPIO_PortClear(BOARD_INITPINS_LEDR_GPIO, BOARD_INITPINS_LEDR_PORT, 1<<BOARD_INITPINS_LEDR_PIN); /* turn on */
  delay();
  GPIO_PortSet(BOARD_INITPINS_LEDR_GPIO, BOARD_INITPINS_LEDR_PORT, 1<<BOARD_INITPINS_LEDR_PIN);  /* turn off */

  /* green */
  GPIO_PortClear(BOARD_INITPINS_LEDG_GPIO, BOARD_INITPINS_LEDG_PORT, 1<<BOARD_INITPINS_LEDG_PIN); /* turn on */
  delay();
  GPIO_PortSet(BOARD_INITPINS_LEDG_GPIO, BOARD_INITPINS_LEDG_PORT, 1<<BOARD_INITPINS_LEDG_PIN);  /* turn off */

  /* blue */
  GPIO_PortClear(BOARD_INITPINS_LEDB_GPIO, BOARD_INITPINS_LEDB_PORT, 1<<BOARD_INITPINS_LEDB_PIN); /* turn on */
  delay();
  GPIO_PortSet(BOARD_INITPINS_LEDB_GPIO, BOARD_INITPINS_LEDB_PORT, 1<<BOARD_INITPINS_LEDB_PIN);  /* turn off */
} 


Mã Blinky

Xây dựng và gỡ lỗi

Thời gian để xây dựng và sau đó gỡ lỗi với bảng được kết nối:

Xây dựng và gỡ lỗi

Với bảng được kết nối với máy chủ, IDE sẽ tự động nhận dạng bảng:

Thăm dò phát hiện

Nhấn OK và trình gỡ lỗi đang tải mã:

Gỡ lỗi Hội đồng quản trị

Chạy nó, và tận hưởng sự mờ ảo

Binky trên Hội đồng quản trị NXP LPC845-BRK

Tóm lược

Mặc dù chưa có SDK dành riêng cho bảng LPC845-BRK, nhưng rất đơn giản và dễ dàng để tạo một ứng dụng mờ cho nó. Sử dụng các công cụ SDK, IDE và Cấu hình NXP MCUXpresso, nó chỉ cần một vài dòng trong mã ứng dụng để sử dụng đèn LED hoặc bất kỳ chân GPIO nào trên bảng.

Danh sách các bài viết về bảng LPC845-BRK:

Chúc mừng chuyển đổi!

Liên kết hữu ích

Hữu ích 2 Chia sẻ Viết bình luận 0
Đã xem 2846