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

 
 
 
Reply to this topicStart new topic
> STM32L151 прерывание от UART, Keil отладка
MiklPolikov
сообщение Nov 30 2013, 20:29
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Наблюдаю такую вещь :

Если под отладкой останавливаю программу так что при этом часть получаемых моим UART данных оказывается пропущена(видимо прерывания не обработаны)
то после этого программа всё время заходит в это прерывание, будто бы остался не сброшен его флаг, и больше ничего не делает. Очень мешает при отладке.
Вопрос: почему так происходит ? С другими прерываниями такого никогда не наблюдал.

Код
void USART3_IRQHandler(void)
{
   USART3->SR=0; // сбросили все флаги прерываний
   BLUETOOTH_RECEIVE_BYTE((char*)&(USART3->DR));
   return;
}


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
A.Lex
сообщение Dec 1 2013, 05:59
Сообщение #2


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

Группа: Участник
Сообщений: 138
Регистрация: 27-12-11
Пользователь №: 69 107



У меня работает код

Код
</p><p>void USART3_IRQHandler(void)
{
volatile unsigned int vsr;

    vsr= USART3->SR;
if (vsr& USART_FLAG_RXNE)                  
  {
        USART3->SR &= ~(USART_FLAG_RXNE);  
        Data_R = USART3->DR;    

        USART_ClearITPendingBit(USART3, USART_IT_RXNE);
  }
}  
</p><p>


Сообщение отредактировал IgorKossak - Dec 1 2013, 14:59
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
alexdos
сообщение Dec 1 2013, 09:47
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 339
Регистрация: 10-07-08
Из: Херсон
Пользователь №: 38 856



Помимо флага прерывания RXNE существуют флаги ошибок.

ORE, FE, PE, NE - и простой сброс типа "USART3->SR=0; // сбросили все флаги прерываний" не всегда достаточный для того чтоб USART возобновил свою работу адекватно. А в Вашем случае именно они и портят погоду.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Dec 1 2013, 10:46
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(alexdos @ Dec 1 2013, 13:47) *
Помимо флага прерывания RXNE существуют флаги ошибок.

ORE, FE, PE, NE - и простой сброс типа "USART3->SR=0; // сбросили все флаги прерываний" не всегда достаточный для того чтоб USART возобновил свою работу адекватно. А в Вашем случае именно они и портят погоду.


Спасибо, заработало !!! Причём не только это, очень много всего заработало ! laughing.gif


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post

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

 


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


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