реклама на сайте
подробности

 
 
> управление ножками, keil+mcb1200(lpc1227)
Tsyganoks
сообщение Jul 30 2012, 10:15
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 7-07-11
Пользователь №: 66 105



Есть контроллер nxp lpc1227. Нужно управлять группой пинов, расположенной на разных портах. Можно определить их так, что на ноге выставлялась 1 после присвоения единицы переменной, а не LPC_GPIO0->SET= PIN[n].
Ну или есть ли какие-нибудь другие способы отойти от этой записи?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andrewlekar
сообщение Jul 31 2012, 05:27
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Нужно использовать силу C и библиотек от NXP.

Вот пример для LPC1114 (там ножки совсем перепутаны):

Код
//соответствие физических адресов порту 0
static uint32_t volatile * const lpc11xx_io_port0[] =
{
  &LPC_IOCON->RESET_PIO0_0,
  &LPC_IOCON->PIO0_1,
  &LPC_IOCON->PIO0_2,
  &LPC_IOCON->PIO0_3,
  &LPC_IOCON->PIO0_4,
  &LPC_IOCON->PIO0_5,
  &LPC_IOCON->PIO0_6,
  &LPC_IOCON->PIO0_7,
  &LPC_IOCON->PIO0_8,
  &LPC_IOCON->PIO0_9,
  &LPC_IOCON->JTAG_TCK_PIO0_10,
  &LPC_IOCON->JTAG_TDI_PIO0_11
};

//соответствие физических адресов порту 1
static uint32_t volatile * const lpc11xx_io_port1[] =
{
  &LPC_IOCON->JTAG_TMS_PIO1_0,
  &LPC_IOCON->JTAG_TDO_PIO1_1,
  &LPC_IOCON->JTAG_nTRST_PIO1_2,
  &LPC_IOCON->ARM_SWDIO_PIO1_3,
  &LPC_IOCON->PIO1_4,
  &LPC_IOCON->PIO1_5,
  &LPC_IOCON->PIO1_6,
  &LPC_IOCON->PIO1_7,
  &LPC_IOCON->PIO1_8,
  &LPC_IOCON->PIO1_9,
  &LPC_IOCON->PIO1_10,
  &LPC_IOCON->PIO1_11
};

//соответствие физических адресов порту 2
static uint32_t volatile * const lpc11xx_io_port2[] =
{
  &LPC_IOCON->PIO2_0,
  &LPC_IOCON->PIO2_1,
  &LPC_IOCON->PIO2_2,
  &LPC_IOCON->PIO2_3,
  &LPC_IOCON->PIO2_4,
  &LPC_IOCON->PIO2_5,
  &LPC_IOCON->PIO2_6,
  &LPC_IOCON->PIO2_7,
  &LPC_IOCON->PIO2_8,
  &LPC_IOCON->PIO2_9,
  &LPC_IOCON->PIO2_10,
  &LPC_IOCON->PIO2_11
};

//соответствие физических адресов порту 3
static uint32_t volatile * const lpc11xx_io_port3[] =
{
  &LPC_IOCON->PIO3_0,
  &LPC_IOCON->PIO3_1,
  &LPC_IOCON->PIO3_2,
  &LPC_IOCON->PIO3_3,
  &LPC_IOCON->PIO3_4,
  &LPC_IOCON->PIO3_5
};

//массив используемых портов.
//Осторожно! Порт 3 содержит только 6 регистров
static uint32_t volatile * const * const lpc11xx_io_matrix[] =
{
    lpc11xx_io_port0,
    lpc11xx_io_port1,
    lpc11xx_io_port2,
    lpc11xx_io_port3
};

/* Public Functions ----------------------------------------------------------- */
/** @addtogroup PINSEL_Public_Functions
* @{
*/

static uint32_t volatile *iocon_GetPinByName(uint8_t portnum, uint8_t pinnum)
{
  return lpc11xx_io_matrix[portnum][pinnum];
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th August 2025 - 13:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01364 секунд с 7
ELECTRONIX ©2004-2016