|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
MSP430F133的串行口通信問題,比較煩 |
| 作者:tranlison 欄目:ARM技術(shù) |
我最近在編寫一個(gè)MSP430F133的通信程序,發(fā)送與接收均采用中斷方式,接收程序工作正常,但發(fā)送程序就比較煩: 明明已經(jīng)進(jìn)入中斷程序,為什么還必須加入等待發(fā)送結(jié)束標(biāo)志語句:while((UTCTL0 & TXEPT)==0);否則就經(jīng)常性的出錯(cuò)。即使加入等待語句,但有時(shí)還是因?yàn)榈却龝r(shí)間過長而發(fā)生看門狗復(fù)位,平均20000次通信中會(huì)發(fā)生一次看門狗復(fù)位。 難道發(fā)送中斷標(biāo)志(UTXIFG0)與發(fā)送結(jié)束標(biāo)志(TXEPT)不同步嗎? 下面是我的發(fā)送中斷程序,拜托各位幫忙糾錯(cuò)!謝謝。! #pragma vector = UART0TX_VECTOR __interrupt void Uart_TXD(void) // 發(fā)送中斷服務(wù)函數(shù)。 { WDT_RES; while((UTCTL0 & TXEPT)==0); // ******** 等待發(fā)送結(jié)束。 WDT_RES; if(Com_TI_Step==0) // 發(fā)送報(bào)文。 { Com_Buffer = Com_Send[Com_Counter]; TXBUF0=Com_Buffer; Com_BCC=Com_BCC^Com_Buffer; Com_Counter++; if(Com_Buffer==0x03)Com_TI_Step=1; // 發(fā)現(xiàn)報(bào)尾。 if(Com_Counter>=39) Com_TI_Step=2; // 超長錯(cuò)誤,未找到報(bào)尾,視為發(fā)報(bào)結(jié)束。 } else if(Com_TI_Step==1){TXBUF0=Com_BCC;Com_TI_Step=2;} // 發(fā)送 BCC 校驗(yàn)碼。 else // 全部報(bào)文最后發(fā)送完畢。 {RT_R; CLR_GRN_LED; Com_RI_Step=0;CONT_RXD;} // 允許 RS485 接收數(shù)據(jù)。關(guān)閉綠燈。為接收做準(zhǔn)備。允許接收數(shù)據(jù)。 WDT_RES; } |
| 2樓: | >>參與討論 |
| 作者: tranlison 于 2005/10/18 7:49:00 發(fā)布:
請(qǐng)幫忙! 我的帖子沒人理,真急人,拜托了各位大俠。 |
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |