关于串口的问题

[复制链接]
2316|4
 楼主| 王培1 发表于 2007-12-10 21:13 | 显示全部楼层 |阅读模式
小生最近做个东东,用到FSL的串口,可怎么也发送不正确,可否看看,提个醒<br />1:串口初始化<br />void&nbsp;init_SCI(void)&nbsp;{<br />/*&nbsp;###&nbsp;Init_SCI&nbsp;init&nbsp;code&nbsp;*/<br />//Baud&nbsp;rate&nbsp;=&nbsp;BUSCLK&nbsp;/&nbsp;(16&nbsp;x&nbsp;SBR12:SBR0)<br />&nbsp;&nbsp;/*&nbsp;SCIBD:&nbsp;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&nbsp;*/<br />&nbsp;&nbsp;SCIBD&nbsp;=&nbsp;BUSCLK/16/SciBandRate;&nbsp;//设置波特率&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;/*&nbsp;SCIC1:&nbsp;LOOPS=0,SCISWAI=0,RSRC=0,M=0,WAKE=0,ILT=0,PE=0,PT=0&nbsp;*/<br />&nbsp;&nbsp;SCIC1&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;/*&nbsp;SCIC2:&nbsp;TIE=1,TCIE=0,RIE=1,ILIE=0,TE=0,RE=1,RWU=0,SBK=0&nbsp;*/<br />&nbsp;&nbsp;SCIC2&nbsp;=&nbsp;0xa4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;/*&nbsp;SCIC3:&nbsp;R8=0,T8=0,TXDIR=1,TXINV=0,ORIE=0,NEIE=0,FEIE=0,PEIE=0&nbsp;*/<br />&nbsp;&nbsp;//SCIC3&nbsp;=&nbsp;0x20;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;/*&nbsp;SCIS2:&nbsp;BRK13=0,RAF=0&nbsp;*/<br />&nbsp;&nbsp;//SCIS2&nbsp;=&nbsp;0x00;<br />}<br />2:接收的数据整理<br />void&nbsp;UartCheckData(void)&nbsp;{<br />unsigned&nbsp;char&nbsp;i;<br />if(&nbsp;!SystemFlag.Bits.Transmitting)&nbsp;{<br />&nbsp;&nbsp;<br /><br />if(&nbsp;SystemFlag.Bits.ReceiveOK&nbsp;==&nbsp;1)&nbsp;{<br />&nbsp;&nbsp;<br /><br />for(&nbsp;i=0;&nbsp;i&lt8;&nbsp;i++)&nbsp;{<br />txBuff&nbsp;=&nbsp;rxBuff;<br />}<br /><br />&nbsp;//SCIC2_TIE&nbsp;=&nbsp;1;<br />&nbsp;SCIC2_TE&nbsp;=&nbsp;1;<br />&nbsp;SystemFlag.Bits.ReceiveOK=0;<br />&nbsp;SystemFlag.Bits.Transmitting&nbsp;=&nbsp;1;<br />}<br />}<br />}<br />3,发送中断<br />__interrupt&nbsp;16&nbsp;void&nbsp;SCITx_isr(void)<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;txPtr&nbsp;==&nbsp;putPtr)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCIC2_TE&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCIC2_RE&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txPtr&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putPtr&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemFlag.Bits.Transmitting&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;SCIC2_TIE&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(SCIS1_TDRE&nbsp;==0)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*等待发送缓冲区空&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;SCIS1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCID&nbsp;=&nbsp;0x55&nbsp;;//SCID&nbsp;=&nbsp;txBuff[txPtr++]&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++txPtr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;}<br />小生刚学FSL,多指教,谢谢<br />
张明峰 发表于 2007-12-10 21:33 | 显示全部楼层

注意SCIC2_TIE

1)SCIC2_TIE&nbsp;在初始化时必须设为0,不然会立即进入中断。当你把发送数据准备好后再SCIC2_TIE=1;<br />2)不要去搞SCIC2_TE,初始化设为1就行了;<br />3)没见你在操作putPtr
 楼主| 王培1 发表于 2007-12-11 09:15 | 显示全部楼层

回教主,我改进了还是不行,

1:串口初始化<br />void&nbsp;init_SCI(void)&nbsp;{<br />/*&nbsp;###&nbsp;Init_SCI&nbsp;init&nbsp;code&nbsp;*/<br />//Baud&nbsp;rate&nbsp;=&nbsp;BUSCLK&nbsp;/&nbsp;(16&nbsp;x&nbsp;SBR12:SBR0)<br />&nbsp;&nbsp;/*&nbsp;SCIBD:&nbsp;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&nbsp;*/<br />&nbsp;&nbsp;SCIBD&nbsp;=&nbsp;BUSCLK/16/SciBandRate;&nbsp;//设置波特率&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;/*&nbsp;SCIC1:&nbsp;LOOPS=0,SCISWAI=0,RSRC=0,M=0,WAKE=0,ILT=0,PE=0,PT=0&nbsp;*/<br />&nbsp;&nbsp;SCIC1&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;/*&nbsp;SCIC2:&nbsp;TIE=0,TCIE=0,RIE=1,ILIE=0,TE=1,RE=1,RWU=0,SBK=0&nbsp;*/<br />&nbsp;&nbsp;SCIC2&nbsp;=&nbsp;0x2c;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;/*&nbsp;SCIC3:&nbsp;R8=0,T8=0,TXDIR=1,TXINV=0,ORIE=0,NEIE=0,FEIE=0,PEIE=0&nbsp;*/<br />&nbsp;&nbsp;//SCIC3&nbsp;=&nbsp;0x20;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;/*&nbsp;SCIS2:&nbsp;BRK13=0,RAF=0&nbsp;*/<br />&nbsp;&nbsp;//SCIS2&nbsp;=&nbsp;0x00;<br />}<br />2:接收的数据整理<br />void&nbsp;UartCheckData(void)&nbsp;{<br />unsigned&nbsp;char&nbsp;i;<br />if(&nbsp;!SystemFlag.Bits.Transmitting)&nbsp;{<br />&nbsp;&nbsp;<br /><br />if(&nbsp;SystemFlag.Bits.ReceiveOK&nbsp;==&nbsp;1)&nbsp;{<br />&nbsp;&nbsp;<br /><br />for(&nbsp;i=0;&nbsp;i&lt8;&nbsp;i++)&nbsp;{<br />txBuff&nbsp;=&nbsp;rxBuff;<br />}<br /><br />&nbsp;//<br />&nbsp;SystemFlag.Bits.ReceiveOK=0;<br />&nbsp;SystemFlag.Bits.Transmitting&nbsp;=&nbsp;1;<br />&nbsp;SCIC2_TIE&nbsp;=&nbsp;1;<br /><br />}<br />}<br />}<br />3:接收中断(之前没有写出来,怕太多,烦)<br />__interrupt&nbsp;15&nbsp;void&nbsp;SCIRx_isr(void)<br />{<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;SCIS1_RDRF&nbsp;&&nbsp;SCIC2_RIE)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//消除帧错误标志&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;SCIS1_FE&nbsp;){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=SCIS1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=SCID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;while(&nbsp;SCIS1_RDRF&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;SCIS1;&nbsp;&nbsp;&nbsp;//清除接收标志<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;SCID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;!SystemFlag.Bits.Receiving&nbsp;)&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;temp&nbsp;==&nbsp;0x02&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemFlag.Bits.Receiving&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putPtr&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rxBuff[putPtr++]&nbsp;=&nbsp;SCID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rxBuff[putPtr++]&nbsp;=&nbsp;SCID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(putPtr&gt10)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemFlag.Bits.Receiving&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(&nbsp;putPtr&nbsp;==&nbsp;rxBuff[1])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemFlag.Bits.Receiving&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCIC2_RE&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemFlag.Bits.ReceiveOK=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;SCIS1_OR&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=SCIS1;&nbsp;//消除溢出错误<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=SCID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;}<br />4:发送中断<br />__interrupt&nbsp;16&nbsp;void&nbsp;SCITx_isr(void)<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;txPtr&nbsp;==&nbsp;putPtr)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCIC2_TIE&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCIC2_RE&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txPtr&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putPtr&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemFlag.Bits.Transmitting&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;SCIC2_TIE&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(SCIS1_TDRE&nbsp;==&nbsp;0)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*等待发送缓冲区空&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;SCIS1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCID&nbsp;=&nbsp;txBuff[txPtr++]&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;}<br />5:我看手册中,下面几个标志不是太明白什么意思<br />1)NF躁声标志<br />2)RAF接收器激活标志<br />3)__interrupt&nbsp;14&nbsp;void&nbsp;SCIError_isr(void)<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PTD_PTD5=1;<br />&nbsp;}<br />这个中断矢量做什么用的?<br />
张明峰 发表于 2007-12-11 14:37 | 显示全部楼层

改一下

2:接收的数据整理<br />void&nbsp;UartCheckData(void)&nbsp;{<br />unsigned&nbsp;char&nbsp;i;<br />if(&nbsp;!SystemFlag.Bits.Transmitting)&nbsp;{<br />&nbsp;&nbsp;<br /><br />if(&nbsp;SystemFlag.Bits.ReceiveOK&nbsp;==&nbsp;1)&nbsp;{<br />&nbsp;&nbsp;<br /><br />for(&nbsp;i=0;&nbsp;i&lt8;&nbsp;i++)&nbsp;{<br />txBuff&nbsp;=&nbsp;rxBuff;<br />}<br /><br /><font color=#FF0000>txPtr&nbsp;&nbsp;=&nbsp;0;<br />putPtr&nbsp;=&nbsp;8;</font>//看你填入了8个字节<br /><br />//<br />SystemFlag.Bits.ReceiveOK=0;<br />SystemFlag.Bits.Transmitting&nbsp;=&nbsp;1;<br />SCIC2_TIE&nbsp;=&nbsp;1;<br /><br />}<br />}<br />}<br /><br /><br />4:发送中断<br />__interrupt&nbsp;16&nbsp;void&nbsp;SCITx_isr(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;SCIS1;<br />&nbsp;&nbsp;&nbsp;&nbsp;SCID&nbsp;=&nbsp;txBuff[txPtr++]&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;txPtr&nbsp;==&nbsp;putPtr)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCIC2_TIE&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemFlag.Bits.Transmitting&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />interrupt&nbsp;14为通讯错误响应中断
 楼主| 王培1 发表于 2007-12-11 15:55 | 显示全部楼层

张教主厉害,小生实在佩服

程序好了,就是上面的问题.<br />1:上面的串口是用QG8做的,<br />2:发送02&nbsp;08&nbsp;xx&nbsp;xx&nbsp;xx&nbsp;xx&nbsp;xx&nbsp;xx&nbsp;(02协议头,08是帧长度),3:就返回你发的这串数据,当然这只是做应用的开始,可以根据你自己需要更改.<br />(有兴趣的朋友可以实验一下.9600,MCU&nbsp;4M--&gtFbus2M<br />)<br />3:对1)NF躁声标志<br />&nbsp;&nbsp;&nbsp;&nbsp;2)RAF接收器激活标志,有什么用还不清楚<br />4:在定时器/脉宽调制器一章中,中心排列PWM模式和边沿排列PWM模式在应用上有什么不同吗,从手册看中心排列PWM模式的躁声小<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

142

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部