標(biāo)題: 關(guān)于單片機(jī)串口中斷的問題 [打印本頁]

作者: 無骨狗    時(shí)間: 2023-11-19 15:54
標(biāo)題: 關(guān)于單片機(jī)串口中斷的問題
大佬們,我在出中斷程序之前將TI置零了,為什么除了程序后又會(huì)繼續(xù)回到中斷程序?我說下想法,是不是出了中斷程序后數(shù)據(jù)才會(huì)被發(fā)送,這個(gè)時(shí)候TI就被硬件置1,所以會(huì)回到中斷程序。那這樣的話TI置零不就沒意義了嗎?想了好久想不清楚,SOS

作者: 電控mmbd    時(shí)間: 2023-11-19 19:03
這要具體到用的什么架構(gòu)品牌型號的單片機(jī)啊,看TI應(yīng)該是51的吧,TI和RI共用的一個(gè)中斷,如果調(diào)用了printf函數(shù),可能還會(huì)被軟件置位。另外,發(fā)送中斷是在數(shù)據(jù)發(fā)送完成之后才會(huì)產(chǎn)生的,而不是先中斷再發(fā)送。希望對你有用
作者: ydatou    時(shí)間: 2023-11-20 08:47
是不是出了中斷程序后數(shù)據(jù)才會(huì)被發(fā)送,這個(gè)時(shí)候TI就被硬件置1

你這想法是錯(cuò)誤的。

TI被硬件置1,表示數(shù)據(jù)發(fā)送完成。
RI被硬件置1,表示有接收數(shù)據(jù)要處理。
發(fā)生了這2種情形會(huì)繼續(xù)回到中斷程序。


作者: yzwzfyz    時(shí)間: 2023-11-20 09:27
1、保證不會(huì)再有串行數(shù)據(jù)收發(fā)行為發(fā)生,即中斷服務(wù)退出后,沒有新的中斷產(chǎn)生了。
2、清除TI不是唯一,還要清除RI。收、發(fā)共用一個(gè)中斷源。
這樣就不會(huì)再來了。
你清了TI。如果串行發(fā)送還在進(jìn)行,則發(fā)送數(shù)據(jù)拼裝完成后,系統(tǒng)會(huì)置位TI!
作者: lkc8210    時(shí)間: 2023-11-20 11:42
先貼代碼




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1