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

 
 
> Прием по USART
Jenya7
сообщение Aug 31 2018, 10:17
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Камень STM32F303CB.Принимаю данные
Код
void USART2_IRQHandler(void)
{
    if ((USART2->ISR & USART_ISR_RXNE) != RESET)
    {
        uint8_t chr = USART2->RDR;

        if (chr == '\r')  
        {
          usart2_rx_buf[usart2_rx_idx] = '\0';
          usart2_rx_idx = 0;
          usart2_rx_ready = 1;
        }
        else
        {
            if(usart2_rx_idx < RX2_BUFFERSIZE)  //no overflow
            {
                usart2_rx_buf[usart2_rx_idx] = chr;
                usart2_rx_idx++;
            }
            else
                usart2_rx_overflow = 1;
            }
    
    }
}
после рисета первый раз я попадаю в условие USART2->ISR & USART_ISR_RXNE - в регистре ISR я вижу RXNE = 1.
И все - все последующте разы я не захожу в условие так как RXNE = 0.
В документации написано что при приеме данных в USART2->RDR флаг взводиться RXNE = 1 а при чтении из USART2->RDR - флаг очищается RXNE =0.
Что я делаю не так?

Еще такая проблема - я все время захожу в USART2_IRQHandler - даже когда размыкаю провод RX - хотя у меня включено только одно прерывание - по принятию -
Код
USART_ITConfig(USARTx, USART_IT_RXNE, ENABLE);
NVIC_EnableIRQ(USART2_IRQn);


Сообщение отредактировал Jenya7 - Aug 31 2018, 11:58
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
x893
сообщение Aug 31 2018, 10:31
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Начните с примеров.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Aug 31 2018, 10:33
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(x893 @ Aug 31 2018, 15:31) *
Начните с примеров.


скачал примеры для F3Discovery - для USART примеров нет.

Нашел пример для моего камня
Код
void USART1_IRQHandler(void)
{
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) // data receive
    {
        USART_ClearITPendingBit(USART1, USART_IT_RXNE);
        rx = (unsigned char) USART_ReceiveData(USART1);
        rxbuff[e] = rx;
        e++;
    }

сделал то же самое только для USART2 - та же беда.

Сообщение отредактировал Jenya7 - Aug 31 2018, 11:33
Go to the top of the page
 
+Quote Post
x893
сообщение Aug 31 2018, 11:46
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Цитата(Jenya7 @ Aug 31 2018, 13:33) *
скачал примеры для F3Discovery - для USART примеров нет.

Тогда надо сначала освоить поиск в гугле или на github
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Aug 31 2018, 11:54
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(x893 @ Aug 31 2018, 16:46) *
Тогда надо сначала освоить поиск в гугле или на github


мне интересно какая цель ваших ответов? чтоб количество сообщений было больше? за это что то дают? медаль какую?
Go to the top of the page
 
+Quote Post
mcheb
сообщение Sep 1 2018, 04:05
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602



Цитата(Jenya7 @ Aug 31 2018, 15:54) *
мне интересно какая цель ваших ответов? чтоб количество сообщений было больше? за это что то дают? медаль какую?

Чтобы не было лишних вопросов
Код
void USART2_IRQHandler(void)
{
    if(USART2->ISR & USART_ISR_RXNE)  // Данные пришли?
    {
        IN_FIFO.buf[IN_FIFO.Put++ % DATABUFSIZE]=USART2->RDR; // кладём в буфер
    }
}
//
void uart2_putc(unsigned char ch)
{
    USART2->TDR=ch;
    while(!(USART2->ISR & USART_ISR_TC));
}
//
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Sep 1 2018, 12:16
Сообщение #7


Местный
***

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



Цитата(mcheb @ Sep 1 2018, 08:05) *
Чтобы не было лишних вопросов...

Это зря Вы так думаете, что их не будет biggrin.gif
И, кстати, Ваш пример не совсем корректен. Если данных будет слишком много, Вы будете их постоянно принимать, т.к. никакого события переполнения входного буфера, видимо, не предусмотрено.

Но как пример, вполне себе...

Сообщение отредактировал Arlleex - Sep 1 2018, 12:16
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Прием по USART   Aug 31 2018, 10:17
- - x893   Начните с примеров.   Aug 31 2018, 10:31
- - x893   Смысл простой - надо научиться самому искать ответ...   Aug 31 2018, 12:19
- - Сергей Борщ   QUOTE (Jenya7 @ Aug 31 2018, 13:17) Еще т...   Aug 31 2018, 13:43
- - Jenya7   я отладил прием Кодvoid USART2_IRQHandler(voi...   Sep 7 2018, 08:22
|- - HardEgor   Цитата(Jenya7 @ Sep 7 2018, 15:22) Delay_...   Sep 7 2018, 09:10
||- - Jenya7   Цитата(HardEgor @ Sep 7 2018, 15:10) Так ...   Sep 7 2018, 09:22
||- - HardEgor   Цитата(Jenya7 @ Sep 7 2018, 16:22) Ставлю...   Sep 7 2018, 09:30
||- - Jenya7   Цитата(HardEgor @ Sep 7 2018, 15:30) На к...   Sep 7 2018, 09:49
||- - HardEgor   Цитата(Jenya7 @ Sep 7 2018, 16:49) переда...   Sep 7 2018, 13:14
|- - Сергей Борщ   QUOTE (Jenya7 @ Sep 7 2018, 11:22) 10 мил...   Sep 7 2018, 14:39
|- - jcxz   Цитата(Сергей Борщ @ Sep 7 2018, 17:39) П...   Sep 7 2018, 15:22
|- - Jenya7   Цитата(Сергей Борщ @ Sep 7 2018, 20:39) П...   Sep 8 2018, 14:48
|- - Arlleex   Цитата(Jenya7 @ Sep 8 2018, 17:48) эта ст...   Sep 8 2018, 16:31
|- - Сергей Борщ   QUOTE (Jenya7 @ Sep 8 2018, 17:48) эта ст...   Sep 8 2018, 18:32
|- - Jenya7   Цитата(Сергей Борщ @ Sep 9 2018, 00:32) Т...   Sep 9 2018, 05:04
|- - Сергей Борщ   QUOTE (Jenya7 @ Sep 9 2018, 08:04) если з...   Sep 9 2018, 06:15
|- - Jenya7   Цитата(Сергей Борщ @ Sep 9 2018, 12:15) У...   Sep 9 2018, 07:21
|- - Сергей Борщ   QUOTE (Jenya7 @ Sep 9 2018, 10:21) У меня...   Sep 9 2018, 08:20
|- - Arlleex   Цитата(Jenya7 @ Sep 9 2018, 10:21) У меня...   Sep 9 2018, 09:59
|- - Jenya7   Цитата(Arlleex @ Sep 9 2018, 15:59) 4 - э...   Sep 9 2018, 10:08
|- - Arlleex   Цитата(Jenya7 @ Sep 9 2018, 13:08) а что ...   Sep 9 2018, 12:27
|- - Jenya7   Цитата(Arlleex @ Sep 9 2018, 18:27) А, не...   Sep 9 2018, 12:49
|- - Arlleex   Цитата(Jenya7 @ Sep 9 2018, 15:49) USART_...   Sep 9 2018, 12:57
|- - Jenya7   Цитата(Arlleex @ Sep 9 2018, 18:57) Чему ...   Sep 9 2018, 13:17
- - Сергей Борщ   QUOTE (Jenya7 @ Sep 9 2018, 15:49) кстати...   Sep 9 2018, 14:27


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

 


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


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