機械社區(qū)

標題: UART的可能性會導致數(shù)據(jù)丟失嗎? [打印本頁]

作者: 布谷鳥科技    時間: 2018-9-21 11:36
標題: UART的可能性會導致數(shù)據(jù)丟失嗎?
在很多使用STM32,HAL的例子中,通過中斷接收UART數(shù)據(jù),代碼如下所示:
最初(開始接收):
  • <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>
    " `, R  N6 j* v9 C

# i) [6 Y: o0 |& a7 w7 ~' V* s[color=rgb(51, 102, 153) !important]復制代碼
, ]. x5 s" D* K1 X
, l" I; s8 d' U. W3 Y" c, u
中斷接收完成后:
  • <font size="4">//Interrupt callback routine
  • void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  • {
  •     ...
  •     HAL_UART_Receive_IT(&huart, Rx_data, 1);
  • }</font>( ?. L5 o1 v/ c+ E; g

/ ]! [' b4 z8 x- \5 k+ i4 e[color=rgb(51, 102, 153) !important]復制代碼

: L. f0 `0 D$ t+ L* R4 E/ `; J1 d
我想知道,是否有可能在實際接收和再次啟動中斷的(接收完成)回調之后丟失字節(jié)。
或者假設上面的中斷處理程序太短,數(shù)據(jù)仍然在UART緩沖區(qū)中?

% o! b  i: ~* E7 p9 n) P
作者: NEMO_LLSoQ    時間: 2018-9-22 17:53
理論上不會,UART接收完成才會產生事件2 U0 @, o% \  T2 ?4 x
UART模塊內部肯定會做緩存處理。
0 c- h& C  y8 q6 t- p5 q! b如果還擔心丟數(shù)據(jù),請使用DMA大法!




歡迎光臨 機械社區(qū) (http://e-learninguniversity.com/) Powered by Discuz! X3.4