USART STM32F2xx и прерывания

USART прерывания stm32Итак USART и прерывания в STM32. Прерывания по USART в STM32 вполне можно организовать на базе стандартной библиотеки работы с периферией. Для этого достаточно установить источник прерывания, приоритет прерывания и описать обработчик. Поскольку файл с заготовками обработчиков имеется, - это стандартный файл любого проекта для STM32f2xx stm32f2xx_it.c, то остается только написать код самого обработчика.

Но для начала инициализация прерываний по USART1 stm32F217.


  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
	// Разрешаем прерывания по приему 
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); 
	// Разрешение прерываний по USART1
  USART_Cmd(USART1, ENABLE);   

Далее простейший обработчик, который устроен так, что то что порт получает то и отдает обратно. Кроме того для визуализации процесса на осциллоскопе в обработчик добавлено дрыгание ногой GPIO_Pin_9.


void USART1_IRQHandler(void)
{
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  {
		// Что получил то и отдал 
    USART_SendData(USART1, USART_ReceiveData(USART1));   
  } 
	// Визуализации прерываний по USART1
  GPIOB->ODR ^= GPIO_OTYPER_ODR_9;
}

Для того, чтобы легче было с справиться с прерываниями USART1 создан небольшой проектик под IAR ARM 6.21 куда включены все необходимые файлы для инициализации клока, GPIO контроллера и USART1. Работает проектик совсем просто. После сброса можно подавать на скорости 115200 бод данные на Rx вход USART1 STM32F217 и налюдать как он отвечает эхом.

USART STM32F2xx

Цель проектика - уяснение инициализации системы тактирования, GPIO контроллера, последовательного порта USART1 STM32F217 на базе стандартной библиотеки периферии и визуализация процесса дергания ногами и прерываний по USART1.

Собственно тестовый проект USART1 STM32F217

Top.Mail.Ru