Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32F107 и UART

Вс дек 17, 2017 20:17:33

Вопрос, почему зависает прерывание? Это нормально?
И как лучше решить проблему.

Проект был сделан в Cube

Логика: принимаем строку , если оканчивается на \r, то отправляем назад str_welcome.

На саму программу не обращаем внимание, логика проста:
При приеме байта со стороны компьютера, срабатывает прерывание (если можно так назвать) void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
и устанавливается флаг rx_cplt в 1, И тогда в main срабатывает условие if (rx_cplt) идет отправка строки str_welcome
Всё просто, но вот вопрос!

Если начать без перерыва (без CTS/RTS) бомбить с терминала на компьютере в сторону STM, то HAL_UART_Transmit_IT видимо начинает захлебывается,
и валится всё! в частности прерывание void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) перестает срабатывать. Результат устройство перестает отвечать
и помогает только снятие питания или RESET.

Получается как-то просто можно завалить всю программу.

Вот сам код. Часть вырезал оставил только основное.

Конечно код тупой, но не в нем дело. Просто хочется услышать ответа от знающих и понять этот момент.
И уже вижу тупые ответы!
Для умников с тупыми ответами типа "Потому что и логика неверна и осознания работы железа нет, сплошное бездумное натыкивание в калокубе..." проходите мимо, не позорьтесь.
А хотите блеснуть умом, тогда просто помогите с ответом, а не изображайте из себя....



Код:
#include "main.h"
#include "stm32f1xx_hal.h"

UART_HandleTypeDef huart1;

uint8_t str_welcome[] = "Welcome to test\r\nReady...\r\n";

volatile int rx_cplt;
uint8_t receivedByte;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);


int main(void)
{
    HAL_Init();

    SystemClock_Config();

    MX_GPIO_Init();
    MX_USART1_UART_Init();

    HAL_UART_Receive_IT(&huart1, &receivedByte, 1);
   
    while (1)
    {
        if(rx_cplt)
        {
            rx_cplt = 0;
            HAL_UART_Transmit_IT(&huart1, (uint8_t*)s, strlen(s));
        }
    }
}

void SystemClock_Config(void)
{
.....
}

static void MX_USART1_UART_Init(void)
{

  huart1.Instance = USART1;
  huart1.Init.BaudRate = 115200;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_NONE;
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart1) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

}

static void MX_GPIO_Init(void)
{
....
....
}

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
   if(huart == &huart1)
   {
      if(receivedByte == '\n') rx_cplt = 1;
      
      HAL_UART_Receive_IT(&huart1, &receivedByte, 1);
   }
}

void _Error_Handler(char * file, int line)
{
  while(1)
  {
  }
}

#ifdef USE_FULL_ASSERT

void assert_failed(uint8_t* file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
    ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */

}

#endif
Последний раз редактировалось Serjaru Вс дек 17, 2017 22:06:33, всего редактировалось 2 раз(а).

Re: STM32F107 и UART

Вс дек 17, 2017 21:21:57

Потому что и логика неверна и осознания работы железа нет, сплошное бездумное натыкивание в калокубе...

Re: STM32F107 и UART

Вс дек 17, 2017 22:00:49

Потому что и логика неверна и осознания работы железа нет, сплошное бездумное натыкивание в калокубе...



уже устал читать ваши го... ответы. Если есть, что по теме сказать - говорите, если нет дальше идите.

Задрали уже такие умники! На форуме не без ...

Re: STM32F107 и UART

Вс дек 17, 2017 22:53:22

del

Re: STM32F107 и UART

Пн дек 18, 2017 02:51:59

Для умников с тупыми ответами типа "Потому что и логика неверна и осознания работы железа нет, сплошное бездумное натыкивание в калокубе..." проходите мимо, не позорьтесь.

вот это, если честно, было очень зря. Не то чтобы я одобрял dosikus-а, но теперь колупайтесь сами.

Re: STM32F107 и UART

Пн дек 18, 2017 04:41:42

Потому что и логика неверна и осознания работы железа нет, сплошное бездумное натыкивание в калокубе...



уже устал читать ваши го... ответы. Если есть, что по теме сказать - говорите, если нет дальше идите.

Задрали уже такие умники! На форуме не без ...

Критические дни начались что ли? :tea:
С этим кубическим дерьмом вам предстоит работать в одиночестве. Можете в поддержку разработчикам написать спросить, по..ебывать их. Пусть тоже страдают.

Re: STM32F107 и UART

Пн дек 18, 2017 15:59:04

Не тратьте своё время. Товарищ уже и на электрониксе "бомбил" этой темой, проигнорил все советы, нахамил в ответ и вот сюда заявился.
Есть такая категория персонажей, которые считают, что им все должны....

Re: STM32F107 и UART

Пн дек 18, 2017 18:04:23

Потому что и логика неверна и осознания работы железа нет, сплошное бездумное натыкивание в калокубе...


уже устал читать ваши го... ответы. Если есть, что по теме сказать - говорите, если нет дальше идите.

Задрали уже такие умники! На форуме не без ...

Критические дни начались что ли? :tea:
С этим кубическим дерьмом вам предстоит работать в одиночестве. Можете в поддержку разработчикам написать спросить, по..ебывать их. Пусть тоже страдают.


Поработаем не волнуйтесь! ) Ведь куб делали только для меня лично, я один с ним работаю ведь.

Где вы видели с моей стороны "по..ебывать"????

Для умников с тупыми ответами типа "Потому что и логика неверна и осознания работы железа нет, сплошное бездумное натыкивание в калокубе..." проходите мимо, не позорьтесь.

вот это, если честно, было очень зря. Не то чтобы я одобрял dosikus-а, но теперь колупайтесь сами.



Ну я понимаю, правда в лицо не всем нравится, проще обидеться, чем увидеть правду.

Но если посмотреть с начала, то я просто задал вопрос, в надежде помощи. И мне не до юмора и прочих шуток. Но в ответ я получил:
"Потому что и логика неверна и осознания работы железа нет, сплошное бездумное натыкивание в калокубе..."
Зачем это было писать? А? Как будто я этот куб делал и т.п.

Но когда я сказал правду, все тут обиделись.

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

Почему-то мне в другой теме, на мой "тупой" вопрос, "Fusion" спокойно написал ответ, за, что я сказал спасибо. И человек не стал писать "говнокуб" и прочее, а просто подсказал.

А тут несколько человек решили себя показать за счет других. Показать свой уровень наступая на других новичков.

Не тратьте своё время. Товарищ уже и на электрониксе "бомбил" этой темой, проигнорил все советы, нахамил в ответ и вот сюда заявился.
Есть такая категория персонажей, которые считают, что им все должны....


"Есть такая категория персонажей, которые считают, что им все должны...." - всех по себе всех не мерьте!

Я бы сказал наоборот, есть такая категория персонажей, которые считают, что подколоть новичка это круто!

"Не тратьте своё время." - правильно! Тратьте на флуд, на намеки, на "что все тупые а я умный".

Да бомбил, потом мне человек сказал, что тут более адекватные люди, которые не будут издеваться и ответят по теме, ааа нет. Вижу, что ничего не меняется.
Удивительно, но на пендосовском сайте много людей ответили без "под...бов". :beer:

И где вы видели, что я нахамил? Там такая же была ситуация! Задал вопрос, а мне "умный" бред с подколами!
Ты почитай тему!!! Там люди адекватно поняли и написали много ответов! Реальных , а не типа "говнокуб"

И не тут ВРАТЬ про "проигнорил все советы, нахамил в ответ и вот сюда заявился", почитай сначала всю тему там!!!
Там больше дали советов и вариантов, чем тут!

Поэтому давайте посмотрим на вещи честно и сначала!

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

Если вам нравится подколы и флуд - то мне нет. Я рассчитывал услышать реальный ответ от профи и знающих людей!

Хотелось как-то по взрослому получить ответы от профи, но ответы "калокуб" и прочее - это я и сам могу.
Возможно это тут принято и в норме.

Ну если, считает, что где-то перегнул палку - то сорри, возможно я (тупой и говнокубом) резко ответил в начале, но мне тоже не понравилось!

Закроем тему и мой вопрос.

Re: STM32F107 и UART

Сб дек 23, 2017 04:59:04

Ну смотрите в говне можно же ковыряться хоть всю жизнь, вам это никто не запрещает, просто это ковыряние в говне не всем интересно, но есть шанс что найдете единомышленников и они вам помогут. Просто вы на другой уровень не перейдете.
dosikus вам сразу ответил по делу.
Есть три пути решения вопроса:
1. Заипать сообщество.
2. Заипать тех.поддержку продукта.
3. Заипаться самому, но изучить и решить вопрос самостоятельно.
Ответить