Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
4 / 3 / 2
Регистрация: 03.11.2018
Сообщений: 11

Не вызывается обработчик прерываний USART2 контроллера stm32f410

07.07.2023, 15:20. Показов 655. Ответов 1

Студворк — интернет-сервис помощи студентам
Добрый день, форумчане. Необходима помощь, ибо я завис. Имеется отладочная плата nucleo с контроллером stm32f410. Необходимо поднять прерывание на USART2, срабатывающий на прием данных. Настроил USART2, отправляю данные - все корректно. Хочу принять данные через обрабочик - не выходит. Ошибок в коде не нашел. Проверил инициализацию обрабтчика - все корректно.Настроил на прерывание по передаче. Все работает.Поднял USART1 с той же кодовой базы, проверил, код работает, обрабочик вызывается. Решив что возможно это брак, подключил другую точно такую же отладочную плату. Там все то же самое, прерывание по приему USART1 работает, USART2 нет. Пока что идей нет. Думал может какие нить перемычки есть на плате, не нашел. Может вы что подскажите?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
void init_USART2(void)
{
 /* ============ Configuration  UART2 =============*/
 
  GPIOA->MODER &= ~GPIO_MODER_MODER2; // Clear MODER
  GPIOA->MODER |= GPIO_MODER_MODE2_1; // Moded alternative func 
  
  GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR2_0 | GPIO_OSPEEDER_OSPEEDR2_1; // Very high speed
  GPIOA->PUPDR &= ~ GPIO_PUPDR_PUPDR2; // No pull-up, pull-down
  GPIOA->OTYPER &= ~GPIO_OTYPER_OT2; // Output push-pull
  GPIOA->AFR[0] &= ~GPIO_AFRL_AFRL2; //Clear AFR
  GPIOA->AFR[0] |= GPIO_AFRL_AFRL2_0 | GPIO_AFRL_AFRL2_1 | GPIO_AFRL_AFRL2_2; // Alternative function AF7
    
    /* PA3 - RX */
  GPIOA->MODER &= ~GPIO_MODER_MODER3; // Clear MODER
  GPIOA->MODER |= GPIO_MODER_MODER3_1; //  MODER Alternative function
  GPIOA->OTYPER &= ~GPIO_OTYPER_OT3;
  GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR3_0 | GPIO_OSPEEDER_OSPEEDR3_1; // Very high speed
  GPIOA->PUPDR &= ~ GPIO_PUPDR_PUPDR3; // No pull-up, pull-down
  GPIOA->AFR[0] &= ~GPIO_AFRL_AFRL3; //Clear AFR
  GPIOA->AFR[0] |= GPIO_AFRL_AFRL3_0 | GPIO_AFRL_AFRL3_1 | GPIO_AFRL_AFRL3_2; // Alternative function AF7
  
  
  
   /* Configuration USART2 */
  RCC->APB1ENR |= RCC_APB1ENR_USART2EN;
  USART2->CR1 |= USART_CR1_OVER8; // oversampling by 8
  //USART2->BRR = UART_BRR_SAMPLING8(SystemCoreClock, 921600);
  USART2->BRR = 0x66; // Baudrate 921600   bus ABPB2(90 MHz)
  USART2->CR1 &= ~USART_CR1_M; // 1 start bit, 8 data bits
  USART2->CR1 &= ~USART_CR1_PCE; // Partity control disabled
  USART2->CR2 &= USART_CR2_STOP; // 1 stop bit
 
  USART2->CR1 |= USART_CR1_RXNEIE; // Enable interrupt in receiving
  USART2->CR1 |= USART_CR1_UE; // enable USART1
  USART2->CR1 |= USART_CR1_TE; // enable USART1 Transmit
  USART2->CR1 |= USART_CR1_RE; // enable USART1 Receive 
  
  SetPriorityHandler(USART2_IRQn, 2, 3);
  NVIC_EnableIRQ(USART2_IRQn); //Enable NVIC
}
void USART2_IRQHandler(void)
{
  if (USART2->SR & USART_SR_RXNE)
  {
    Error_Code error = USART_Receive(USART2, &data, sizeof(data), 100);    
    if (error == HAL_OK)
    {
        .....
    }
        else
    {
      ResetRXBufferData(USART_BC);
    }
    USART_BC->SR &= ~USART_SR_RXNE;
  }
  NVIC_ClearPendingIRQ(USART2_IRQn); // Reset handler
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.07.2023, 15:20
Ответы с готовыми решениями:

Инициализация программируемого контроллера прерываний
Всем доброго времени суток, у меня есть процедура инициализации ПКП: MOV DX, 20h // Ведущий MOV AH, 20h //Номер...

Контроллер прерываний и маскирование ведомого контроллера
Немного теории: прерывания от внешних устройств сначала обрабатывает контроллер прерываний, а затем он подает сигнал INT камню (в...

Понимание работы контроллера вложенных прерываний
Никак не могу до конца понять работу контроллера вложенных прерываний в Arm Sortix M3. В документации написано, что контроллер...

1
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,869
09.07.2023, 12:03
Цитата Сообщение от devpin Посмотреть сообщение
отладочная плата nucleo
Цитата Сообщение от devpin Посмотреть сообщение
Настроил USART2,
USart2 у nucleo используется как отладочный порт подключён через отладчик к usb. Учел это?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.07.2023, 12:03
Помогаю со студенческими работами здесь

Обработчик прерываний
Необходимо сделать так, чтобы каждое второе нажатие игнорировалось. Почему то этого не происходит. Помогите кто может, очень срочно надо ...

Обработчик прерываний
Задача: написать обработчик прерываний, заменяющий вектор прерывания от часов (1СН) и выводящий на экран окно размером в целый экран,...

обработчик прерываний
Скопировал обработчик прерывания с Калашникова, а он не работает. В чом проблема??? (работаю в выне)

Обработчик прерываний
Здраствуйте есть код из одного ресурса. Там задача к нему также идет. В это коде есть комменты. В принципе практически все понятно но не...

Обработчик прерываний
Есть такое задание: "При нажатии символьной клавиши с нажатой клавишей Shift выводить её код. Для вывода использовать прерывание...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru