MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
Куски кода, которые могут пригодится.
16.06.2014
16:20
Раздел: Разное - ARM - milandr

1. Функция инициализации порта


void Port_init(void){

#if defined MILANDR

MDR_RST_CLK->PER_CLOCK |= (1UL << 21); // разрешение тактирования порта A


MDR_PORTA->OE = ((1 << 0) | (1 << 1)); //направление передачи данных = Выход

MDR_PORTA->ANALOG = ((1 << 0) | (1 << 1)); //режим работы контроллера =

MDR_PORTA->FUNC = ((0 << 0*2) | (0 << 1*2)); //режим работы вывода порта =

MDR_PORTA->PULL = ((0 << 0) | (0 << 1)); //запрещение подтяжки к GND

//MDR_PORTB->PULL = ((0 << (1 << 16))); //запрещение подтяжки к VCC

MDR_PORTA->PD = ((0 << 0) | (0 << 1)); //режим работы выхода =

MDR_PORTA->PWR = ((3 << 0*2) | (3 << 1*2)); //скорость фронта вывода = максимальная

#else

// Выставляем тактирование в APB2

RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;


// Конфигурируем CRL регистры.

GPIOA->CRL &= ~GPIO_CRL_CNF1; // Сбрасываем биты CNF для бита 1. Режим 00 - Push-Pull

GPIOA->CRL |= GPIO_CRL_MODE1_0; // Выставляем бит MODE0 для 1 пина. Режим MODE01 = Max Speed 10MHz

GPIOA->CRL &= ~GPIO_CRL_CNF0; // Сбрасываем биты CNF для бита 0. Режим 00 - Push-Pull

GPIOA->CRL |= GPIO_CRL_MODE0_0; // Выставляем бит MODE0 для 0 пина. Режим MODE01 = Max Speed 10MHz


#endif

}



Так же в этом разделе:
← Содержание ...
 
MyTetra Share v.0.36
Яндекс индекс цитирования