機(jī)械社區(qū)

 找回密碼
 注冊(cè)會(huì)員

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2331|回復(fù): 1
打印 上一主題 下一主題

UART的可能性會(huì)導(dǎo)致數(shù)據(jù)丟失嗎?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2018-9-21 11:36:45 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
在很多使用STM32,HAL的例子中,通過(guò)中斷接收UART數(shù)據(jù),代碼如下所示:
最初(開(kāi)始接收):
  • <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>) g; J* W8 j0 O% l

9 z9 V& [) g+ l2 t3 w+ c: b8 m[color=rgb(51, 102, 153) !important]復(fù)制代碼
" _$ ~5 w+ A. \" m: t  p

; e: J' {3 d: o/ k8 Y8 P# Q+ [$ j
中斷接收完成后:
  • <font size="4">//Interrupt callback routine
  • void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  • {
  •     ...
  •     HAL_UART_Receive_IT(&huart, Rx_data, 1);
  • }</font>0 a1 B: D$ c: z- h9 g

7 ^& A- G; v7 N9 {% F* L[color=rgb(51, 102, 153) !important]復(fù)制代碼
6 }3 K1 t9 n- C: E
我想知道,是否有可能在實(shí)際接收和再次啟動(dòng)中斷的(接收完成)回調(diào)之后丟失字節(jié)。
或者假設(shè)上面的中斷處理程序太短,數(shù)據(jù)仍然在UART緩沖區(qū)中?

$ _& E! ?6 C' C% U* y  Z
回復(fù)

使用道具 舉報(bào)

2#
發(fā)表于 2018-9-22 17:53:14 | 只看該作者
理論上不會(huì),UART接收完成才會(huì)產(chǎn)生事件
4 J- N( T0 {; }( Z) W$ w2 {4 u5 YUART模塊內(nèi)部肯定會(huì)做緩存處理。
; T& W/ d/ [9 m# A/ b3 X7 Z& o/ U如果還擔(dān)心丟數(shù)據(jù),請(qǐng)使用DMA大法!

本版積分規(guī)則

小黑屋|手機(jī)版|Archiver|機(jī)械社區(qū) ( 京ICP備10217105號(hào)-1,京ICP證050210號(hào),浙公網(wǎng)安備33038202004372號(hào) )

GMT+8, 2024-11-17 16:49 , Processed in 0.048571 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表