LPC
Работа с портами ввода/вывода LPC1114. Пример.
Пример работы с GPIO показывает основные действия по настройке, опросу и установке линий порта ввода/вывода, за исключением вопросов, связанных с прерываниями. Для установки отдельных битов используется операция сдвига, вида (1<<6). В данном случае это означает, что 1 сдвигается на 6 разрядов влево. Иначе говоря, данная операция заносит единицы в 6 бит регистра. Такая запись удобна тем, что позволяет видеть непосредственно номер бита, с которым производится работа. Обратная операция будет выглядеть (0<<6), хотя ее можно заменить на простое нулевое значение.
Пример программы выполняет опрос входа GPIO3_0 и если на нем появляется высокий уровень включает GPIO3_5. Данный пример был опробован на LPCXpresso. При использовании платы следует учитывать, что на платах с процессором LPC1114 у линий GPIO3_4, GPIO3_5 нанесена маркировка 2.4, 2.5. Линии GPIO2_4, GPIO2_5 промаркированы USB-DM и USB-DP.
#ifdef __USE_CMSIS
#include "LPC11xx.h"
#endif
#include <cr_section_macros.h>
#include <NXP/crp.h>
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;
int main(void)
{
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6); // Подключение GPIO к AHB
LPC_GPIO3->DIR |= (0x1<<5); // Настройка GPIO3_5 на вывод
LPC_GPIO3->DIR |= (0<<0); // Настройка GPIO3_0 на ввод
LPC_IOCON->PIO3_0 = 8; // Включение Pull-down резистора на GPIO3_0
while(1)
{
if (LPC_GPIO3->MASKED_ACCESS[1]) // Проверка состояния GPIO3_0
{
LPC_GPIO3->MASKED_ACCESS[(1<<5)] = 1<<5;} // Если GPIO3_0 = 1 то включить GPIO3_5
else {LPC_GPIO3->MASKED_ACCESS[(1<<5)] = 0<<5;
} // Иначе выключить GPIO3_5
}
return 0 ;
}
Еще по теме:
Работа с портами ввода/вывода LPC1114.
Работа с портами ввода/вывода LPC1114. Регистры
.