小生最近做个东东,用到FSL的串口,可怎么也发送不正确,可否看看,提个醒<br />1:串口初始化<br />void init_SCI(void) {<br />/* ### Init_SCI init code */<br />//Baud rate = BUSCLK / (16 x SBR12:SBR0)<br /> /* SCIBD: SBR12=0,SBR11=0,SBR10=0,SBR9=0,SBR8=0,SBR7=0,SBR6=0,SBR5=0,SBR4=1,SBR3=1,SBR2=0,SBR1=1,SBR0=0 */<br /> SCIBD = BUSCLK/16/SciBandRate; //设置波特率 <br /> /* SCIC1: LOOPS=0,SCISWAI=0,RSRC=0,M=0,WAKE=0,ILT=0,PE=0,PT=0 */<br /> SCIC1 = 0x00; <br /> /* SCIC2: TIE=1,TCIE=0,RIE=1,ILIE=0,TE=0,RE=1,RWU=0,SBK=0 */<br /> SCIC2 = 0xa4; <br /> /* SCIC3: R8=0,T8=0,TXDIR=1,TXINV=0,ORIE=0,NEIE=0,FEIE=0,PEIE=0 */<br /> //SCIC3 = 0x20; <br /> /* SCIS2: BRK13=0,RAF=0 */<br /> //SCIS2 = 0x00;<br />}<br />2:接收的数据整理<br />void UartCheckData(void) {<br />unsigned char i;<br />if( !SystemFlag.Bits.Transmitting) {<br /> <br /><br />if( SystemFlag.Bits.ReceiveOK == 1) {<br /> <br /><br />for( i=0; i<8; i++) {<br />txBuff = rxBuff;<br />}<br /><br /> //SCIC2_TIE = 1;<br /> SCIC2_TE = 1;<br /> SystemFlag.Bits.ReceiveOK=0;<br /> SystemFlag.Bits.Transmitting = 1;<br />}<br />}<br />}<br />3,发送中断<br />__interrupt 16 void SCITx_isr(void)<br /> {<br /> unsigned char temp;<br /> <br /> <br /> if( txPtr == putPtr) {<br /> SCIC2_TE = 0;<br /> SCIC2_RE = 1;<br /> txPtr = 0;<br /> putPtr = 0;<br /> SystemFlag.Bits.Transmitting = 0;<br /> } else{<br /> if( SCIC2_TIE ) {<br /> while(SCIS1_TDRE ==0) ; /*等待发送缓冲区空 */<br /> temp = SCIS1;<br /> SCID = 0x55 ;//SCID = txBuff[txPtr++] ;<br /> ++txPtr;<br /> <br /> }<br /> }<br /> }<br />小生刚学FSL,多指教,谢谢<br /> |
|