16+
Среда
21 февраля
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

ARM-контроллеры

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
Evgeniy1294  (21.01.2018 20:50 - 21.01.2018 20:53) , в ответ на А не мелковата абстракция? автор: Скрипач
Я так и делаю. Даже проще: 
 void COMMON::initCommon();

 void COMMON::initCommon()
 {
   InitUSART();
   // Ещё что-нибудь
 }
void COMMON::init_usart()
{
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOGEN;
	
  // 1   - RS-422 "for command"
    // 1.1 - Тактуем блок 
    RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
    // 1.2 - Настраиваем ноги
    GPIO::pincfg_alternate(GPIOA, GPIO::PIN::PIN_8, GPIO::AF::USART_1, GPIO::OTYPE::PP, GPIO::OSPEED::HIGH,
GPIO::PULL::FLOATING);
    GPIO::pincfg_alternate(GPIOA, GPIO::PIN::PIN_9, GPIO::AF::USART_1, GPIO::OTYPE::PP, GPIO::OSPEED::HIGH,
GPIO::PULL::FLOATING);
    GPIO::pincfg_output   (GPIOG, GPIO::PIN::PIN_8, GPIO::OTYPE::PP, GPIO::OSPEED::LOW, GPIO::PULL::FLOATING);
    // 1.3 - Настраиваем USART
    USART::init(USART1, 19200, USART::PARITY::NONE, USART::STOPBIT::STB_1);
	
  // 2  - RS-422 "for servo"
    // 2.1 - Тактуем блок 
    RCC->APB2ENR |= RCC_APB2ENR_USART6EN;
    // 2.2 - Настраиваем ноги
    GPIO::pincfg_alternate(GPIOG, GPIO::PIN::PIN_9, GPIO::AF::USART_6, GPIO::OTYPE::PP, GPIO::OSPEED::HIGH,
GPIO::PULL::FLOATING);
    GPIO::pincfg_alternate(GPIOG, GPIO::PIN::PIN_14, GPIO::AF::USART_6, GPIO::OTYPE::PP, GPIO::OSPEED::HIGH,
GPIO::PULL::FLOATING);
    GPIO::pincfg_output   (GPIOG, GPIO::PIN::PIN_7, GPIO::OTYPE::PP, GPIO::OSPEED::LOW, GPIO::PULL::FLOATING);
    // 2.3 - Настраиваем USART
    USART::init(USART6, 19200, USART::PARITY::NONE, USART::STOPBIT::STB_1);
	
  return;
}
Выглядит страшненько, но удобно. Работает быстро. Конечно, медленнее, чем записать нужную комбинацию бит в регистр. Подобные функции выполняются, как правило, один раз на этапе инициализации МК и на скорость работы не влияют. В критичных местах, например в прерываниях, я нужные комбинации пишу напрямую в регистры.
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7526 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII