16+
Четверг
27 июня
Вход |Карта сайта |Upload |codebook | PARTS

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

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

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

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

caxapa

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

AVR PIC MSP PLD,FPGA,DSP 

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

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

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

 
Новая темаПравила РегистрацияСтатистика Архив
Вернуться в конференциюТопик полностью
evgeniy1294  (07.06.2019 10:44) , в ответ на Я наивно полагал, что на одно EXTI0 только одна ножка может быть заведена. Прямого запрета на несколько ножек на одно EXTI0в в документации не видел. Проверяли, реально работает от нескольких ног? автор: Sl
Там мультиплексор стоит. Ксения просто в доке не разобралась ещё, поэтому задаёт странные вопросы: 
/** @brief Pin number list [_0:_15] */
enum class Pin
{
  //! @cond Doxygen_Suppress
  _0 = 0,   _1 = 1,   _2 = 2,   _3 = 3,
  _4 = 4,   _5 = 5,   _6 = 6,   _7 = 7,
  _8 = 8,   _9 = 9,  _10 = 10, _11 = 11,
  _12 = 12, _13 = 13, _14 = 14, _15 = 15,
  //! @endcond
};

struct Gpio
{
  GPIO_TypeDef* const port;
  const Pin pin;
  bool  inverted;
            
  Gpio(GPIO_TypeDef* port, Pin pin, bool inverted = false): 
  port(port), pin(pin), inverted(inverted){}
};


enum class Trigger
{
  falling,
  rising,	
  both,		
};

/** 
  @brief Config EXTI trigger for GPIO
  @param [in] gpio gpio instance,
  @param [in] trigger rising, falling or both.
*/
void gpio::ConfigEXTI(Gpio& gpio, Trigger trig)
{
  uint32_t p = static_cast<uint32_t>(gpio.pin);
	
  // 1 - Calc "port number"   
  uint16_t port  = (uint16_t)(((uint32_t)gpio.port - GPIOA_BASE)>>10);
  // 2 - Calc "group number"   
  uint8_t grp   = p >> 2;
  // 3 - Calc offset
  uint8_t offset = (p - (grp << 2)) << 2;
	
  // 4 - Connect EXTI to pin    
  SYSCFG->EXTICR[grp] |= port<<offset;
	
  // 5 - Enable EXTI
  EXTI->IMR |= (1 << p);   

  // 6 - Set trigger
  if ((trig == Trigger::falling)||(trig == Trigger::both))
    EXTI->FTSR |= (1 << p);

  if ((trig == Trigger::rising)||(trig == Trigger::both))   		
    EXTI->RTSR |= (1 << p);
	
  return;
}
Главное не забыть затактовать SYSCFG:
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
 [x][x][x][x][x][x] [x][x][x][x][x][x][x][x]

Тема выделяется по переводу строки или автоматом

 

Имя


Регистрация позволит вам редактировать и перемещать ваши сообщения и прикреплять к ним файлы.
 
Символы: á é ó ú ý « »
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7527 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXIX