реклама на сайте
подробности

 
 
> Сломал мозг! STM32F107VCT6, прерывание, USART2
Sergey Abaev
сообщение Dec 15 2017, 09:46
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 4-01-10
Из: Москва
Пользователь №: 54 631



Есть программка для выявления проблемы.

Простое usart эхо, принимает байты - срабатывает прерывание и отправляет hello назад.

Сам код может быть странный, но суть не в этом. Выдернули из большого.

Суть в том, что прерывание "виснет" когда начинаю бомбить быстро байтами. Как будто захлебывается. Помогает только снятие питания или резет.

и срабатывает строка "if(HAL_UART_Receive_IT(&huart1, &rcv, 1)!=HAL_OK)"

Как быть? В чем проблема?

Сразу для ответов "гугли", "читай RM" и прочих ... проходим мимо!

Я хочу получить ответ, о тех, кто действительно умный и знает, как решить проблему, кто уже сталкивался с этим.

Код
....
UART_HandleTypeDef huart1;
....
char rcv;
volatile int rcvd;
....
....
int main(void)
{
...
  MX_USART1_UART_Init();
...
  while (1)
  {
        if(rcvd)
        {
            HAL_GPIO_WritePin(Led_GPIO_Port, Led_Pin, GPIO_PIN_SET);
            rcvd = 0;
            HAL_UART_Transmit(&huart1, "Hello!\r\n", 8, 0xFFFF);
            HAL_GPIO_WritePin(Led_GPIO_Port, Led_Pin, GPIO_PIN_RESET);
        }
  }
}

....
....
....
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if(huart == &huart1)
    {
        if(rcv == '\n') rcvd = 1;

        if(HAL_UART_Receive_IT(&huart1, &rcv, 1)!=HAL_OK)
        {
            HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_0);
        }
    }
}
...
...
...


Сообщение отредактировал Sergey Abaev - Dec 15 2017, 12:53
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- - ViKo   Цитата(Sergey Abaev @ Dec 15 2017, 12:46)...   Dec 15 2017, 10:09
|- - Sergey Abaev   Цитата(ViKo @ Dec 15 2017, 13:09) Не хват...   Dec 15 2017, 10:12
- - x893   Нет понимания работы. Надо смотреть, что происходи...   Dec 15 2017, 11:42
- - adnega   Цитата(Sergey Abaev @ Dec 15 2017, 12:46)...   Dec 15 2017, 17:47
- - x893   Можно добавить HAL_UART_ErrorCallback и там отслеж...   Dec 15 2017, 18:04
- - sadat   Ну и кто за вас будет сбрасывать всякие ошибки при...   Dec 15 2017, 18:27
- - x893   HAL их сбрасывает за меня (и за остальных тоже). П...   Dec 15 2017, 18:48
- - pvman   когда "виснет", смотреть состояние флаго...   Dec 15 2017, 19:11
- - x893   Так написал же Sergey Abaev, что он не читает RM. ...   Dec 15 2017, 19:16
- - vlad_new   Можно попробовать в прерывании, перед выходом, пос...   Dec 17 2017, 09:36
|- - leocat   Это с какой же частотой UART "бомбить" н...   Dec 17 2017, 19:31
- - juvf   Цитата(Sergey Abaev @ Dec 15 2017, 14:46)...   Dec 18 2017, 07:20
- - rakpavel   да, флаг USART_FLAG_ORE -указывает на ошибку пере...   Dec 18 2017, 10:15
- - Sergey Abaev   Народ!!!! спасибо всем, кто подска...   Dec 18 2017, 17:31
- - ViKo   Так в чем ошибка была?   Dec 18 2017, 18:41


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 06:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016