<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									UART по DMA - Микроконтроллеры				            </title>
            <link>https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/</link>
            <description>Обсуждение вопросов, посвященных программированию микроконтроллеров, разработке электроники и не только.</description>
            <language>ru-RU</language>
            <lastBuildDate>Sun, 05 Apr 2026 06:04:09 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>НА: UART по DMA</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-98</link>
                        <pubDate>Tue, 12 Apr 2016 16:55:44 +0000</pubDate>
                        <description><![CDATA[Я думаю все-таки нужно добавить флаг точь-в-точь как статье про SPI и DMA и повторную передачу вызывать только после гарантированного окончания. В данном варианте этого нет.

Все остальные н...]]></description>
                        <content:encoded><![CDATA[Я думаю все-таки нужно добавить флаг точь-в-точь как статье про SPI и DMA и повторную передачу вызывать только после гарантированного окончания. В данном варианте этого нет.

Все остальные настройки вроде бы правильные.]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Aveal</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-98</guid>
                    </item>
				                    <item>
                        <title>НА: UART по DMA</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-97</link>
                        <pubDate>Tue, 12 Apr 2016 16:38:31 +0000</pubDate>
                        <description><![CDATA[спасибо за помощь.
может для запуска есть еще какие-либо условия. После инициализации ведь первое прерывание на отправку срабатывает.]]></description>
                        <content:encoded><![CDATA[спасибо за помощь.
может для запуска есть еще какие-либо условия. После инициализации ведь первое прерывание на отправку срабатывает.]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Марат</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-97</guid>
                    </item>
				                    <item>
                        <title>НА: UART по DMA</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-96</link>
                        <pubDate>Tue, 12 Apr 2016 16:34:06 +0000</pubDate>
                        <description><![CDATA[нет, проверял по программным флагам]]></description>
                        <content:encoded><![CDATA[нет, проверял по программным флагам]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Марат</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-96</guid>
                    </item>
				                    <item>
                        <title>НА: UART по DMA</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-95</link>
                        <pubDate>Tue, 12 Apr 2016 16:28:41 +0000</pubDate>
                        <description><![CDATA[Ну получается, что повторная отправка может быть запущена до того, как предыдущая завершилась.]]></description>
                        <content:encoded><![CDATA[Ну получается, что повторная отправка может быть запущена до того, как предыдущая завершилась.]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Aveal</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-95</guid>
                    </item>
				                    <item>
                        <title>НА: UART по DMA</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-94</link>
                        <pubDate>Tue, 12 Apr 2016 15:54:28 +0000</pubDate>
                        <description><![CDATA[в цикле while(1)]]></description>
                        <content:encoded><![CDATA[в цикле while(1)]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Марат</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-94</guid>
                    </item>
				                    <item>
                        <title>НА: UART по DMA</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-93</link>
                        <pubDate>Tue, 12 Apr 2016 15:41:47 +0000</pubDate>
                        <description><![CDATA[вызываю из mail

  if (delta_b)    HAL_UART_Transmit_DMA(&amp;huart1, index_bout, 1); //отправляем по УСАРТ]]></description>
                        <content:encoded><![CDATA[вызываю из mail

  if (delta_b)    HAL_UART_Transmit_DMA(&amp;huart1, index_bout, 1); //отправляем по УСАРТ]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Марат</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-93</guid>
                    </item>
				                    <item>
                        <title>НА: UART по DMA</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-92</link>
                        <pubDate>Tue, 12 Apr 2016 15:37:21 +0000</pubDate>
                        <description><![CDATA[А когда именно происходит повторный вызов функции отправки?]]></description>
                        <content:encoded><![CDATA[А когда именно происходит повторный вызов функции отправки?]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Aveal</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-92</guid>
                    </item>
				                    <item>
                        <title>UART по DMA</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-14</link>
                        <pubDate>Tue, 12 Apr 2016 15:32:48 +0000</pubDate>
                        <description><![CDATA[Принимаю побайтно через HAL_UART_Receive_DMA(&amp;huart1, index_uin, 1), настройки DMA &quot;стандартные&quot;:

    /* Peripheral DMA init*/

    hdma_usart1_tx.Instance = DMA1_Channel4;
    hdma_usa...]]></description>
                        <content:encoded><![CDATA[Принимаю побайтно через HAL_UART_Receive_DMA(&amp;huart1, index_uin, 1), настройки DMA "стандартные":

    /* Peripheral DMA init*/

    hdma_usart1_tx.Instance = DMA1_Channel4;
    hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
    hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_usart1_tx.Init.MemInc = DMA_MINC_DISABLE; //ENABLE;
    hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
    hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
    hdma_usart1_tx.Init.Mode = DMA_NORMAL;
    hdma_usart1_tx.Init.Priority = DMA_PRIORITY_HIGH;//LOW;
    HAL_DMA_Init(&amp;hdma_usart1_tx);

    __HAL_LINKDMA(huart,hdmatx,hdma_usart1_tx);

    hdma_usart1_rx.Instance = DMA1_Channel5;
    hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
    hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_usart1_rx.Init.MemInc = DMA_MINC_DISABLE; //ENABLE;
    hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
    hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
    hdma_usart1_rx.Init.Mode = DMA_NORMAL;
    hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW;
    HAL_DMA_Init(&amp;hdma_usart1_rx);

    __HAL_LINKDMA(huart,hdmarx,hdma_usart1_rx);

однако отослать также побайтно не могу. Уходит только байт. Адреса приема и посылки инкрементирую в прерываниях:

void DMA1_Channel4_IRQHandler(void)
{
  /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */

  //уход!

  /* USER CODE END DMA1_Channel4_IRQn 0 */
  HAL_DMA_IRQHandler(&amp;hdma_usart1_tx);
  /* USER CODE BEGIN DMA1_Channel4_IRQn 1 */

  delta_b--;
  if ((index_bout - mass_cmx) == bufer_cmx) index_bout = mass_cmx;
  else index_bout++;
  
  /* USER CODE END DMA1_Channel4_IRQn 1 */
}
void DMA1_Channel5_IRQHandler(void)
{
  /* USER CODE BEGIN DMA1_Channel5_IRQn 0 */
  
  //приход!
 
  /* USER CODE END DMA1_Channel5_IRQn 0 */
  HAL_DMA_IRQHandler(&amp;hdma_usart1_rx);
  
  /* USER CODE BEGIN DMA1_Channel5_IRQn 1 */
   
  if ((index_uin - mass_u) == bufer_u) index_uin = mass_u;
    else index_uin++;

  delta_u++;
  if (delta_u != bufer_u) HAL_UART_Receive_DMA(&amp;huart1, index_uin, 1); //перезапуск !

  /* USER CODE END DMA1_Channel5_IRQn 1 */
}
Перезапускаю передачу

HAL_UART_Transmit_DMA(&amp;huart1, index_bout, 1);

Короче 4 канал DMA1 затыкается после первой отправки и это прерываение больше не работает. В чем может быть дело?]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Марат</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/uart-po-dma/#post-14</guid>
                    </item>
							        </channel>
        </rss>
		