#define InitUART( BRGVal, BRGHighVal ) { \
UARTTxD = UARTTxDInit; \
DirUARTTxD = DirOutput; \
DirUARTRxD = DirInput; \
SPBRG2 = BRGVal; \
TXSTA2bits.BRGH = BRGHighVal; \
TXSTA2bits.SYNC = 0; \
TXSTA2bits.TX9 = 0; \
TXSTA2bits.TXEN = 1; \
RCSTA2bits.SPEN = 1; \
RCSTA2bits.RX9 = 0; \
IPR3bits.RC2IP = 1; \
IPR3bits.TX2IP = 0; \
PIE3bits.TX2IE = 0; \
PIE3bits.RC2IE = 1; \
RCSTA2bits.CREN = 0; \
}
最後の行で、RCSTA2bits.CREN を 0 に設定する必要があるのはなぜですか? oに設定されている場合、入ってくるデータをどのように受け取ることができますか?
優先度の高い受信割り込みで UsART2 を初期化します
InitUART (9600,1);// initialise the USART2 with high priority receive interrupt
これは私の高い割り込みコードです
//when some data is transmitted in through USART2
if (UARTRxIntFlag == 1) {
//receive interrupt occurs, do receive function(UARTChIn = ?)
}
これは私の低割り込みコードです
rom unsigned char * szHello = "Hello\r\n";
if (IsSWI( SWI_LMTData ) ){
unsigned char ch = *LMTRxCh;
// if the received character from USART1 is an 'H'
if (ch=='h' || ch=='H'){
// say hello back through USART1
LMTTransmit( szHello, 0, 7, 255, LogicalChannel );
// send 'H' through USART2
UARTChOut = ch;
}
// remove the character from the receive buffer
LMTRxAdvanceCh;
//Receive enable for USART2(RCSTA2bits.CREN = 1;)
UARTEnable = 1;
ClearSWI( SWI_LMTData ); // Clear interrupt flag
return;
}
if (IsSWI( SWI_Tick ) ){
ClearSWI( SWI_Tick ); // Clear interrupt flag
return;
}
ページ 106 0F http://www.flexipanel.com/Docs/Toothpick%202.1%20DS484.pdf
このコードは機能していません。理由がわかりません。それを手伝ってもらえますか?