NXP LPC Başlangıç Soruları

Başlatan cengav4r, 05 Aralık 2014, 16:46:41

berkay_91

benim kullandığım lpc 1768 linkteki lpc 2138 için, benimkiyle alakası yok

MC_Skywalker


cengav4r

Board üzerinde GPIO0 portundan Digital okuma yapmaya çalışıyorum.
Tek portu mesela LPC_GPIO0 portun 15 pinini digital olarak (0-1) ve LPC_GPIO0 (yani 0 portun hepsini) okumak istiyorum.Nasıl yapabilirim?
Yine sormuş olacağım ancak kullandığınız harhangi bir referans kaynak var mı bu registerleri öğrenmek için? tşk.

JKramer


cengav4r

Alıntı yapılan: JKramer - 16 Aralık 2014, 14:24:33
http://www.lpcware.com/downloads
User Manual'lara bakabilirsiniz.
içlerinde en yararlı döküman "UM10360.pdf". Keşke örnekli anlatsalarmış.

cihan_297

Merhabalar, elimde LPC1768 geliştirme board'ı var. Board üzerindeki GLCD ekranı yatay olarak kullanmak istiyorum. nasıl yapabileceğim hakkında fikri olan var mı?

cengav4r

LPCxpresso'ya header eklemeye çalışıyorum (Mesela,#include "type.h", #include"stdio.h") ancak başarılı olamadım.
Properties -> C/C++ Build -> Settings -> Tool Settings -> MCU C Compiler -> Includes
Yukardaki yolu izleyip type.h falan eklemem lazım ama type.h nerde bulamadım.

MC_Skywalker

<type.h> şeklinde yazmayı dene olmazsa  başlık dosyası NXP nin örneklerinde alaman gerekli.  normal STD lib dosyasıydı.

cengav4r

Alıntı yapılan: MC_Skywalker - 16 Ocak 2015, 10:07:27
<type.h> şeklinde yazmayı dene olmazsa  başlık dosyası NXP nin örneklerinde alaman gerekli.  normal STD lib dosyasıydı.

Proje Klasörünün içine manuel olarak inc klasörü oluşturup, içine lpc_types.h dosyasını attım, derleme hatası vermedi. Bakalım çalışaçak mı?

MC_Skywalker

içine aşağıdakikodu kopyala kaydet.

/***********************************************************************//**
 * @file                lpc_types.h
 * @brief               Contains the NXP ABL typedefs for C standard types.
 *                      It is intended to be used in ISO C conforming development
 *                      environments and checks for this insofar as it is possible
 *                      to do so.
 * @version             1.0
 * @date                27 Jul. 2008
 * @author              wellsk
 **************************************************************************
 * Software that is described herein is for illustrative purposes only
 * which provides customers with programming information regarding the
 * products. This software is supplied "AS IS" without any warranties.
 * NXP Semiconductors assumes no responsibility or liability for the
 * use of the software, conveys no license or title under any patent,
 * copyright, or mask work right to the product. NXP Semiconductors
 * reserves the right to make changes in the software without
 * notification. NXP Semiconductors also make no representation or
 * warranty that such application will be suitable for the specified
 * use without further testing or modification.
 **************************************************************************/

/* Type group ----------------------------------------------------------- */
/** @defgroup LPC_Types LPC_Types
 * @ingroup LPC1700CMSIS_FwLib_Drivers
 * @{
 */

#ifndef LPC_TYPES_H
#define LPC_TYPES_H

/* Includes ------------------------------------------------------------------- */
#include <stdint.h>


/* Public Types --------------------------------------------------------------- */
/** @defgroup LPC_Types_Public_Types LPC_Types Public Types
 * @{
 */

/**
 * @brief Boolean Type definition
 */
typedef enum {FALSE = 0, TRUE = !FALSE} Bool;

/**
 * @brief Flag Status and Interrupt Flag Status type definition
 */
typedef enum {RESET = 0, SET = !RESET} FlagStatus, IntStatus, SetState;
#define PARAM_SETSTATE(State) ((State==RESET) || (State==SET))

/**
 * @brief Functional State Definition
 */
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
#define PARAM_FUNCTIONALSTATE(State) ((State==DISABLE) || (State==ENABLE))

/**
 * @ Status type definition
 */
typedef enum {ERROR = 0, SUCCESS = !ERROR} Status;


/**
 * Read/Write transfer type mode (Block or non-block)
 */
typedef enum
{
        NONE_BLOCKING = 0,              /**< None Blocking type */
        BLOCKING,                               /**< Blocking type */
} TRANSFER_BLOCK_Type;


/** Pointer to Function returning Void (any number of parameters) */
typedef void (*PFV)();

/** Pointer to Function returning int32_t (any number of parameters) */
typedef int32_t(*PFI)();

/**
 * @}
 */


/* Public Macros -------------------------------------------------------------- */
/** @defgroup LPC_Types_Public_Macros  LPC_Types Public Macros
 * @{
 */

/* _BIT(n) sets the bit at position "n"
 * _BIT(n) is intended to be used in "OR" and "AND" expressions:
 * e.g., "(_BIT(3) | _BIT(7))".
 */
#undef _BIT
/* Set bit macro */
#define _BIT(n) (1<<n)

/* _SBF(f,v) sets the bit field starting at position "f" to value "v".
 * _SBF(f,v) is intended to be used in "OR" and "AND" expressions:
 * e.g., "((_SBF(5,7) | _SBF(12,0xF)) & 0xFFFF)"
 */
#undef _SBF
/* Set bit field macro */
#define _SBF(f,v) (v<<f)

/* _BITMASK constructs a symbol with 'field_width' least significant
 * bits set.
 * e.g., _BITMASK(5) constructs '0x1F', _BITMASK(16) == 0xFFFF
 * The symbol is intended to be used to limit the bit field width
 * thusly:
 * <a_register> = (any_expression) & _BITMASK(x), where 0 < x <= 32.
 * If "any_expression" results in a value that is larger than can be
 * contained in 'x' bits, the bits above 'x - 1' are masked off.  When
 * used with the _SBF example above, the example would be written:
 * a_reg = ((_SBF(5,7) | _SBF(12,0xF)) & _BITMASK(16))
 * This ensures that the value written to a_reg is no wider than
 * 16 bits, and makes the code easier to read and understand.
 */
#undef _BITMASK
/* Bitmask creation macro */
#define _BITMASK(field_width) ( _BIT(field_width) - 1)

/* NULL pointer */
#ifndef NULL
#define NULL ((void*) 0)
#endif

/* Number of elements in an array */
#define NELEMENTS(array)  (sizeof (array) / sizeof (array[0]))

/* Static data/function define */
#define STATIC static
/* External data/function define */
#define EXTERN extern

#define MAX(a, b) (((a) > (b)) ? (a) : (b))
#define MIN(a, b) (((a) < (b)) ? (a) : (b))

/**
 * @}
 */


/* Old Type Definition compatibility ------------------------------------------ */
/** @addtogroup LPC_Types_Public_Types LPC_Types Public Types
 * @{
 */

/** SMA type for character type */
typedef char CHAR;

/** SMA type for 8 bit unsigned value */
typedef uint8_t UNS_8;

/** SMA type for 8 bit signed value */
typedef int8_t INT_8;

/** SMA type for 16 bit unsigned value */
typedef uint16_t UNS_16;

/** SMA type for 16 bit signed value */
typedef int16_t INT_16;

/** SMA type for 32 bit unsigned value */
typedef uint32_t UNS_32;

/** SMA type for 32 bit signed value */
typedef int32_t INT_32;

/** SMA type for 64 bit signed value */
typedef int64_t INT_64;

/** SMA type for 64 bit unsigned value */
typedef uint64_t UNS_64;

/** 32 bit boolean type */
typedef Bool BOOL_32;

/** 16 bit boolean type */
typedef Bool BOOL_16;

/** 8 bit boolean type */
typedef Bool BOOL_8;

/**
 * @}
 */


#endif /* LPC_TYPES_H */

/**
 * @}
 */

/* --------------------------------- End Of File ------------------------------ *

cihan_297

#25
Merhabalar,  LPC1768 board aldım ve denemeler yapıyorum. main fonksiyonundan bir fonksiyona gidiyorum, ancak oradan geri main'in içine gelemiyorum. Yani ekranda bir yere dokunulduğunda mainden devam etsin istiyorum kısaca. "return 0" komutu çalışmadı, "break;" komutu da çalışmadı. break'ın çalışması için ne yapmam gerekiyor.?

Edit: komut çalıştı:) ekranı temizleyip yeniden yazmam gerkiyormuş sadece..