[ZLG-ARM] LPC2200 uart中断收发(多字节)

[复制链接]
5434|12
 楼主| cdd51408 发表于 2008-12-24 09:45 | 显示全部楼层 |阅读模式
串口整理好久,终于有所收获,和大家共享一下,顺道请各位高手看看有没有需要改进的地方。<br /><br />#include&nbsp;&quot;config.h&quot;<br /><br />/*&nbsp;定义串口模式设置数据结构&nbsp;*/<br />typedef&nbsp;struct&nbsp;UartMode<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;datab;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;字长度,5/6/7/8可选<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;stopb;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;停止位,1/2可选<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;parity;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;奇偶校验位,0-无校验,1-奇校验,2-偶校验<br />}UARTMODE;<br /><br />uint8&nbsp;rcv_buf[256];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART0数据接收缓冲区<br />volatile&nbsp;uint8&nbsp;rcv_new;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;接收新数据标志<br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:IRQ_UART0()<br />**&nbsp;函数功能&nbsp;:串口0接收中断服务程序<br />**&nbsp;入口参数&nbsp;:无<br />**&nbsp;出口参数&nbsp;:无<br />*********************************************************************************************************<br />*/<br />uint8&nbsp;head=0;<br />uint8&nbsp;tail=0;<br /><br />void&nbsp;__irq&nbsp;IRQ_UART0&nbsp;(void)<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((U0IIR&nbsp;&&nbsp;0x0F)&nbsp;==&nbsp;0x04)&nbsp;&nbsp;&nbsp;&nbsp;//U0IIR中断标识<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rcv_new&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置接收到新的数据标志<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;//非接收到新数据的中断是否直接返回?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while((U0LSR&0x01)!=0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rcv_buf[tail]&nbsp;=&nbsp;U0RBR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读取FIFO的数据,并清除中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tail++;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tail%=256;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;中断处理结束<br />}<br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:UART0_SendByte()<br />**&nbsp;函数功能&nbsp;:向串口0发送1字节数据<br />**&nbsp;入口参数&nbsp;:dat&nbsp;&nbsp;&nbsp;&nbsp;要发送的数据<br />**&nbsp;出口参数&nbsp;:无<br />*********************************************************************************************************<br />*/<br />void&nbsp;UART0_SendByte&nbsp;(uint8&nbsp;dat)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;U0THR&nbsp;=&nbsp;dat;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;要发送的数据<br />}<br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:UART0_SendBuf()<br />**&nbsp;函数功能&nbsp;:向串口发送8字节数据<br />**&nbsp;入口参数&nbsp;:dat&nbsp;&nbsp;&nbsp;&nbsp;要发送的数据<br />**&nbsp;出口参数&nbsp;:无<br />*********************************************************************************************************<br />*/<br />void&nbsp;UART0_SendBuf&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=head;&nbsp;i&lttail;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART0_SendByte(rcv_buf);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;head=tail;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((U0LSR&nbsp;&&nbsp;0x20)&nbsp;==&nbsp;0);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待数据发送完毕<br />}<br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:UART0_Init()<br />**&nbsp;函数功能&nbsp;:串口初始化,设置工作模式和波特率。<br />**&nbsp;入口参数&nbsp;:baud&nbsp;&nbsp;&nbsp;&nbsp;波特率<br />**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;&nbsp;&nbsp;&nbsp;模式设置(UARTMODE数据结构)<br />**&nbsp;出口参数&nbsp;:1-初始化成功,&nbsp;&nbsp;0-初始化失败<br />*********************************************************************************************************<br />*/<br />int8&nbsp;UART0_Init&nbsp;(uint32&nbsp;baud,&nbsp;UARTMODE&nbsp;set)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint32&nbsp;bak;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;参数过滤&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((baud&nbsp;==0&nbsp;)&nbsp;||&nbsp;(baud&nbsp;&gt&nbsp;115200))&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((set.datab&nbsp;&lt5)&nbsp;||&nbsp;(set.datab&nbsp;&gt&nbsp;8))&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((set.stopb&nbsp;==&nbsp;0)&nbsp;||&nbsp;(set.stopb&nbsp;&gt&nbsp;2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(set.parity&nbsp;&gt&nbsp;4)&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;设置串口波特率&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;U0LCR&nbsp;=&nbsp;0x80;&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;DLAB&nbsp;=&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bak&nbsp;&nbsp;&nbsp;=&nbsp;(Fpclk&nbsp;&gt&gt&nbsp;4)&nbsp;/&nbsp;baud;<br />&nbsp;&nbsp;&nbsp;&nbsp;U0DLM&nbsp;=&nbsp;bak&nbsp;&gt&gt&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;U0DLL&nbsp;=&nbsp;bak&nbsp;&&nbsp;0xFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;设置串口模式&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;bak&nbsp;&nbsp;&nbsp;=&nbsp;set.datab&nbsp;-&nbsp;5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置字长<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(set.stopb&nbsp;==&nbsp;2)&nbsp;&nbsp;&nbsp;&nbsp;bak&nbsp;|=&nbsp;0x04;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;判断是否为2位停止位<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(set.parity&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set.parity&nbsp;=&nbsp;set.parity&nbsp;-&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bak&nbsp;|=&nbsp;0x08;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;bak&nbsp;|=&nbsp;set.parity&nbsp;&lt&lt&nbsp;4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置奇偶校验<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;U0LCR&nbsp;=&nbsp;bak;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(1);<br />}<br /><br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:main()<br />**&nbsp;函数功能&nbsp;:从串口UART0接收字符串&quot;ABCDEFGH&quot;,并发送回上位机显示。<br />**&nbsp;调试说明&nbsp;:需要PC串口显示终端软件如EasyARM.exe。<br />*********************************************************************************************************<br />*/<br />int&nbsp;main&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;UARTMODE&nbsp;set;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;set.datab&nbsp;&nbsp;=&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;set.stopb&nbsp;&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;set.parity&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rcv_new&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00000005;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置I/O连接到UART0<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;UART0_Init(115200,&nbsp;set);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;串口初始化<br />&nbsp;&nbsp;&nbsp;&nbsp;//U0FCR&nbsp;=&nbsp;0x01;&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;使能FIFO,并设置触发点为1字节<br />&nbsp;&nbsp;&nbsp;&nbsp;//U0IER&nbsp;=&nbsp;0x01;&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;允许RBR中断,即接收中断<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//IRQEnable();&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;使能IRQ中断<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;使能UART0中断&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntSelect&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置所有的通道为IRQ中断<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl0&nbsp;=&nbsp;0x20&nbsp;|&nbsp;0x06;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART0分配到IRQ&nbsp;slot0,即最高优先级<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr0&nbsp;=&nbsp;(uint32)IRQ_UART0;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置UART0向量地址<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntEnable&nbsp;=&nbsp;1&nbsp;&lt&lt&nbsp;0x06;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能UART0中断<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(rcv_new&nbsp;==&nbsp;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;U0IER=0x00;//关串口中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rcv_new&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;UART0_SendBuf();<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;U0IER=0x01;//开串口中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br />/*********************************************************************************************************<br />**&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;End&nbsp;Of&nbsp;File<br />********************************************************************************************************/<br />
tubie 发表于 2008-12-28 21:51 | 显示全部楼层

我觉得没有必要搞得像楼上那么复杂吧,本来就是个简单的

  
xwj 发表于 2008-12-29 08:33 | 显示全部楼层

“我们”要换成你们吧?

  
HWM 发表于 2008-12-29 08:54 | 显示全部楼层

我一般都把这些玩意儿整成“流”

  
HWM 发表于 2008-12-29 09:28 | 显示全部楼层

一般认为自己的代码很垃圾的,离专业通常不会太近。

  
xwj 发表于 2008-12-29 12:28 | 显示全部楼层

MD

牛皮癣,<br />看到就烦...<br /><br />就算你说的再好,说得天花乱坠,我还是字觉得烦.
g19860529 发表于 2008-12-29 12:37 | 显示全部楼层

armecos是不是精神有问题?

真的,我感觉就是
sz_kd 发表于 2008-12-29 12:40 | 显示全部楼层

人家是牛必须承认~~~~

  
hackdj 发表于 2008-12-29 13:18 | 显示全部楼层

到处都是这个广告,看的是有点麻烦

ecos自己弄弄还是不难的,底层移植都做好了,自己改改就ok
john_light 发表于 2008-12-29 13:34 | 显示全部楼层

闲着也是闲着,我顶老杨。

能从十本书里头找到一两本对自己有用的就不错。<br /><br />能从别人一百句话里头找到几句对自己有促进的同样不错。<br /><br />我是个粗人,近来觉得抽象这东西还有点用。<br /><br />老杨的广告吗,我就看看。
wgc204 发表于 2008-12-31 13:26 | 显示全部楼层

谢谢楼主分享

谢谢楼主分享<br /><br />不过下面两句应该不能注解掉的;<br /><br />U0FCR&nbsp;=&nbsp;0x01;&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;使能FIFO,并设置触发点为1字节<br />U0IER&nbsp;=&nbsp;0x01;&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;允许RBR中断,即接收中断<br />
zhongyb 发表于 2009-1-1 16:49 | 显示全部楼层

看到armecos就想到了罗家英

一个建议,如果真的想把你们的产品推广好,何不考虑开源呢?
暮然 发表于 2009-1-4 22:09 | 显示全部楼层

跑题了,各位!

&nbsp;&nbsp;&nbsp;&nbsp;各位,还是另开一贴,慢慢研讨吧。不是每个人都愿意看这些谁是谁非的争论,和一群政客一般。<br />&nbsp;&nbsp;&nbsp;&nbsp;看了楼主的代码,想来也是从周工那参考了不少。提两个建议吧。<br />&nbsp;&nbsp;&nbsp;&nbsp;uart接收中断:采用fifo,应该有两个中断结果,其一是完全接收到填满fifo。其二是未完全填满fifo。你只用到了上述第一种情况。在多数情况下,uart通信协议并不是只有一种数据长度,当遇到多种数据长度协议时,就不适用了,很可能就会把一些过长数据阶段,剩下未知长度数据;也可能无法实时的处理较短长度数据,而必须等到填满fifo才处理。上述其二的方法就是:采用fifo接收超时中断,即fifo在连续收到数据,未达到设定数据个数时,在之后的4~5个ms内没收到数据,产生中断,可在中断中将数据从fifo中读出。<br />&nbsp;&nbsp;&nbsp;uart数据发送:很多人喜欢用for(~~~~)sent&nbsp;方式发送,在发送数据过程中,mcu除了能处理中断,就不能干其他事情,效率低下。可改为在主循环中查询发送,即不影响发送也不耗费mcu时间。更好的是采用fifo发送。<br />&nbsp;&nbsp;&nbsp;&nbsp;这些东西是在工程实践中积累的经验,希望对楼主,对其他人有帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

7

帖子

0

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