<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 關(guān)于STM32的串口溢出中斷

關(guān)于STM32的串口溢出中斷

作者: 時(shí)間:2018-07-24 來(lái)源:網(wǎng)絡(luò ) 收藏

之前遇到奇怪的問(wèn)題:

本文引用地址:http://dyxdggzs.com/article/201807/383617.htm

中斷處理函數中加了處理:

if(USART_GetITStatus(USART1,USART_IT_ORE) != RESET) //產(chǎn)生

{

Utemp = USART_ReceiveData(USART1); //扔掉接收的數據

USART_ClearITPendingBit(USART1, USART_IT_ORE); //清標志位

}

參考手冊ISR寄存器:

位 3 ORE: 溢出錯誤

在RXNE=1 的的條件下(也就是上次數據還沒(méi)有讀走),接收寄存器又接收好

了一個(gè)字節的數據并準備往RDR 寄存器去轉移的時(shí)候,會(huì )由硬件將這個(gè)位置1。

由軟件向USART_ICR 寄存器的ORECF 位寫(xiě)1,可以清除這個(gè)標志。

如果USART_CR1 寄存器中的RXNEIE 位或EIE 位是1,就會(huì )產(chǎn)生中斷請求。

0: 沒(méi)有溢出錯誤

1: 檢測到溢出錯誤

CR1中的RXNEIE已經(jīng)使能,實(shí)際溢出發(fā)生時(shí)keil中觀(guān)察ORE的確被置位為1。

然鵝,,,,,,,,

就算ORE置位為1,這個(gè)if語(yǔ)句也不通過(guò)。。。。。

后來(lái)網(wǎng)上找到這句話(huà):

“ORE中斷只能使用USART_GetFlagStatus(USART1, USART_FLAG_ORE) 讀到(沒(méi)有使能USART_IT_ERR中斷時(shí))”

驚奇的發(fā)現還有USART_GetFlagStatus可以用!

USART_GetITStatus(USART1,USART_IT_ORE)這個(gè)函數在USART_IT_ERR未使能時(shí)并不能正確ORE的正確狀態(tài)!!!!!!

可以使用USART_GetFlagStatus(USART1,USART_FLAG_ORE)讀取,或者初始化時(shí)使能USART_IT_ERR。關(guān)于USART_IT_ERR在庫函數中的定義:

(##) USART_IT_ERR: specifies the interrupt source for Error interrupt (Frame error, noise error, overrun error)

補充一下這倆函數的區別(看庫函數更直接):

IT主要就是與中斷相關(guān)的,檢查USART中斷產(chǎn)生與否,當USART發(fā)送完成后會(huì )有USART_IT_TC中斷,因此可以用來(lái)判斷,而USART_GetFlagStatus是USART標志位設置與否,其中就有發(fā)送完成標志位USART_Flag_TC所以也可用來(lái)判斷。而最終都是操作ISR寄存器

  • 單片機中文官網(wǎng)
  • 單片機官方開(kāi)發(fā)工具
  • 單片機參考設計


關(guān)鍵詞: STM32 串口 溢出中斷

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>