|
Прием по USART |
|
|
|
Aug 31 2018, 10:17
|
Профессионал
    
Группа: Участник
Сообщений: 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
|
|
|
|
|
 |
Ответов
|
Aug 31 2018, 10:33
|
Профессионал
    
Группа: Участник
Сообщений: 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
|
|
|
|
|
Sep 1 2018, 04:05
|
Местный
  
Группа: Участник
Сообщений: 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)); } //
|
|
|
|
|
Sep 1 2018, 12:16
|

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

|
Цитата(mcheb @ Sep 1 2018, 08:05)  Чтобы не было лишних вопросов... Это зря Вы так думаете, что их не будет И, кстати, Ваш пример не совсем корректен. Если данных будет слишком много, Вы будете их постоянно принимать, т.к. никакого события переполнения входного буфера, видимо, не предусмотрено. Но как пример, вполне себе...
Сообщение отредактировал Arlleex - Sep 1 2018, 12:16
|
|
|
|
Сообщений в этой теме
Jenya7 Прием по USART Aug 31 2018, 10:17 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|