<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LPC MicrocontrollersのトピックRe: The function of USART_RTOS_Receive can not receive data in sometimes</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/The-function-of-USART-RTOS-Receive-can-not-receive-data-in/m-p/1348943#M46614</link>
    <description>&lt;P&gt;Hi, James,&lt;/P&gt;
&lt;P&gt;As you know that the FreeRtos_uart example uses interrupt mechanism. Pls refer to the red color lines, in the usart ISR&amp;nbsp; USART_TransferHandleIRQ(), the &lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;handle-&amp;gt;rxDataSize&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt; variable is the &lt;FONT color="#FF0000"&gt;&amp;amp;n &lt;FONT color="#000000"&gt;as you have defined.&lt;/FONT&gt;&lt;BR /&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;USART_RTOS_Receive(&amp;amp;handle, recv_buffer, sizeof(recv_buffer), &amp;amp;n);&lt;/P&gt;
&lt;P&gt;When the defined size of characters have been received, a callback function is called in the ISR, in the callback function,in the callback function, an event is triggered.&lt;/P&gt;
&lt;P&gt;xResult = xEventGroupSetBitsFromISR(handle-&amp;gt;rxEvent, RTOS_USART_COMPLETE, &amp;amp;xHigherPriorityTaskWoken);&lt;/P&gt;
&lt;P&gt;In conclusion, the function error = USART_RTOS_Receive(&amp;amp;handle, recv_buffer, sizeof(recv_buffer), &amp;amp;n); is blocked with the line:&lt;/P&gt;
&lt;P&gt;ev = xEventGroupWaitBits(handle-&amp;gt;rxEvent, RTOS_USART_COMPLETE | RTOS_USART_RING_BUFFER_OVERRUN, pdTRUE, pdFALSE,&lt;BR /&gt;portMAX_DELAY);&lt;/P&gt;
&lt;P&gt;until all the predefined size of characters have been received.&lt;/P&gt;
&lt;P&gt;Hope it can help you&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiangJun Rong&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;void USART_TransferHandleIRQ(USART_Type *base, usart_handle_t *handle)&lt;BR /&gt;{&lt;BR /&gt;/* Check arguments */&lt;BR /&gt;assert((NULL != base) &amp;amp;&amp;amp; (NULL != handle));&lt;/P&gt;
&lt;P&gt;bool receiveEnabled = ((handle-&amp;gt;rxDataSize != 0U) || (handle-&amp;gt;rxRingBuffer != NULL));&lt;BR /&gt;bool sendEnabled = (handle-&amp;gt;txDataSize != 0U);&lt;BR /&gt;uint8_t rxdata;&lt;BR /&gt;size_t tmpsize;&lt;/P&gt;
&lt;P&gt;/* If RX overrun. */&lt;BR /&gt;if ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_RXERR_MASK) != 0U)&lt;BR /&gt;{&lt;BR /&gt;/* Clear rx error state. */&lt;BR /&gt;base-&amp;gt;FIFOSTAT |= USART_FIFOSTAT_RXERR_MASK;&lt;BR /&gt;/* clear rxFIFO */&lt;BR /&gt;base-&amp;gt;FIFOCFG |= USART_FIFOCFG_EMPTYRX_MASK;&lt;BR /&gt;/* Trigger callback. */&lt;BR /&gt;if (handle-&amp;gt;callback != NULL)&lt;BR /&gt;{&lt;BR /&gt;handle-&amp;gt;callback(base, handle, kStatus_USART_RxError, handle-&amp;gt;userData);&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;while ((receiveEnabled &amp;amp;&amp;amp; ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_RXNOTEMPTY_MASK) != 0U)) ||&lt;BR /&gt;(sendEnabled &amp;amp;&amp;amp; ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_TXNOTFULL_MASK) != 0U)))&lt;BR /&gt;{&lt;BR /&gt;/* Receive data */&lt;BR /&gt;if (receiveEnabled &amp;amp;&amp;amp; ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_RXNOTEMPTY_MASK) != 0U))&lt;BR /&gt;{&lt;BR /&gt;/* Receive to app bufffer if app buffer is present */&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;if (handle-&amp;gt;rxDataSize != 0U)&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;rxdata = (uint8_t)base-&amp;gt;FIFORD;&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;*handle-&amp;gt;rxData = rxdata;&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;handle-&amp;gt;rxDataSize--;&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;handle-&amp;gt;rxData++;&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;receiveEnabled = ((handle-&amp;gt;rxDataSize != 0U) || (handle-&amp;gt;rxRingBuffer != NULL));&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;if (0U == handle-&amp;gt;rxDataSize)&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;if (NULL == handle-&amp;gt;rxRingBuffer)&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;base-&amp;gt;FIFOINTENCLR = USART_FIFOINTENCLR_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK;&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;handle-&amp;gt;rxState = (uint8_t)kUSART_RxIdle;&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;if (handle-&amp;gt;callback != NULL)&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;handle-&amp;gt;callback(base, handle, kStatus_USART_RxIdle, handle-&amp;gt;userData);&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;</description>
    <pubDate>Thu, 30 Sep 2021 06:27:10 GMT</pubDate>
    <dc:creator>xiangjun_rong</dc:creator>
    <dc:date>2021-09-30T06:27:10Z</dc:date>
    <item>
      <title>The function of USART_RTOS_Receive can not receive data in sometimes</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/The-function-of-USART-RTOS-Receive-can-not-receive-data-in/m-p/1348809#M46610</link>
      <description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; When the length of data received by the serial port is less than the third argument of the function,&lt;BR /&gt;the function of USART_RTOS_Receive will still receive data until the data received by the serial port is more than or equal to thevalue of length.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; For example, if the third argument of the function is set 4, the function of USART_RTOS_Receive will be still in the state of receiving data when the serial port receives only 2 data.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Is this normal, please? Is there a way to solve this problem (except to set the third parameter lenth to 1)?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks very much!&lt;/P&gt;</description>
      <pubDate>Thu, 30 Sep 2021 01:54:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/The-function-of-USART-RTOS-Receive-can-not-receive-data-in/m-p/1348809#M46610</guid>
      <dc:creator>HuangJames</dc:creator>
      <dc:date>2021-09-30T01:54:56Z</dc:date>
    </item>
    <item>
      <title>Re: The function of USART_RTOS_Receive can not receive data in sometimes</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/The-function-of-USART-RTOS-Receive-can-not-receive-data-in/m-p/1348943#M46614</link>
      <description>&lt;P&gt;Hi, James,&lt;/P&gt;
&lt;P&gt;As you know that the FreeRtos_uart example uses interrupt mechanism. Pls refer to the red color lines, in the usart ISR&amp;nbsp; USART_TransferHandleIRQ(), the &lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;handle-&amp;gt;rxDataSize&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt; variable is the &lt;FONT color="#FF0000"&gt;&amp;amp;n &lt;FONT color="#000000"&gt;as you have defined.&lt;/FONT&gt;&lt;BR /&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;USART_RTOS_Receive(&amp;amp;handle, recv_buffer, sizeof(recv_buffer), &amp;amp;n);&lt;/P&gt;
&lt;P&gt;When the defined size of characters have been received, a callback function is called in the ISR, in the callback function,in the callback function, an event is triggered.&lt;/P&gt;
&lt;P&gt;xResult = xEventGroupSetBitsFromISR(handle-&amp;gt;rxEvent, RTOS_USART_COMPLETE, &amp;amp;xHigherPriorityTaskWoken);&lt;/P&gt;
&lt;P&gt;In conclusion, the function error = USART_RTOS_Receive(&amp;amp;handle, recv_buffer, sizeof(recv_buffer), &amp;amp;n); is blocked with the line:&lt;/P&gt;
&lt;P&gt;ev = xEventGroupWaitBits(handle-&amp;gt;rxEvent, RTOS_USART_COMPLETE | RTOS_USART_RING_BUFFER_OVERRUN, pdTRUE, pdFALSE,&lt;BR /&gt;portMAX_DELAY);&lt;/P&gt;
&lt;P&gt;until all the predefined size of characters have been received.&lt;/P&gt;
&lt;P&gt;Hope it can help you&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiangJun Rong&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;void USART_TransferHandleIRQ(USART_Type *base, usart_handle_t *handle)&lt;BR /&gt;{&lt;BR /&gt;/* Check arguments */&lt;BR /&gt;assert((NULL != base) &amp;amp;&amp;amp; (NULL != handle));&lt;/P&gt;
&lt;P&gt;bool receiveEnabled = ((handle-&amp;gt;rxDataSize != 0U) || (handle-&amp;gt;rxRingBuffer != NULL));&lt;BR /&gt;bool sendEnabled = (handle-&amp;gt;txDataSize != 0U);&lt;BR /&gt;uint8_t rxdata;&lt;BR /&gt;size_t tmpsize;&lt;/P&gt;
&lt;P&gt;/* If RX overrun. */&lt;BR /&gt;if ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_RXERR_MASK) != 0U)&lt;BR /&gt;{&lt;BR /&gt;/* Clear rx error state. */&lt;BR /&gt;base-&amp;gt;FIFOSTAT |= USART_FIFOSTAT_RXERR_MASK;&lt;BR /&gt;/* clear rxFIFO */&lt;BR /&gt;base-&amp;gt;FIFOCFG |= USART_FIFOCFG_EMPTYRX_MASK;&lt;BR /&gt;/* Trigger callback. */&lt;BR /&gt;if (handle-&amp;gt;callback != NULL)&lt;BR /&gt;{&lt;BR /&gt;handle-&amp;gt;callback(base, handle, kStatus_USART_RxError, handle-&amp;gt;userData);&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;while ((receiveEnabled &amp;amp;&amp;amp; ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_RXNOTEMPTY_MASK) != 0U)) ||&lt;BR /&gt;(sendEnabled &amp;amp;&amp;amp; ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_TXNOTFULL_MASK) != 0U)))&lt;BR /&gt;{&lt;BR /&gt;/* Receive data */&lt;BR /&gt;if (receiveEnabled &amp;amp;&amp;amp; ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_RXNOTEMPTY_MASK) != 0U))&lt;BR /&gt;{&lt;BR /&gt;/* Receive to app bufffer if app buffer is present */&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;if (handle-&amp;gt;rxDataSize != 0U)&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;rxdata = (uint8_t)base-&amp;gt;FIFORD;&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;*handle-&amp;gt;rxData = rxdata;&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;handle-&amp;gt;rxDataSize--;&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;handle-&amp;gt;rxData++;&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;receiveEnabled = ((handle-&amp;gt;rxDataSize != 0U) || (handle-&amp;gt;rxRingBuffer != NULL));&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;if (0U == handle-&amp;gt;rxDataSize)&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;if (NULL == handle-&amp;gt;rxRingBuffer)&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;base-&amp;gt;FIFOINTENCLR = USART_FIFOINTENCLR_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK;&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;handle-&amp;gt;rxState = (uint8_t)kUSART_RxIdle;&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;if (handle-&amp;gt;callback != NULL)&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;handle-&amp;gt;callback(base, handle, kStatus_USART_RxIdle, handle-&amp;gt;userData);&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;</description>
      <pubDate>Thu, 30 Sep 2021 06:27:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/The-function-of-USART-RTOS-Receive-can-not-receive-data-in/m-p/1348943#M46614</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2021-09-30T06:27:10Z</dc:date>
    </item>
  </channel>
</rss>

