小女子含泪跪求:有关44B0 串口中断问题!~~

[复制链接]
3980|19
 楼主| sophia719 发表于 2007-8-8 10:13 | 显示全部楼层 |阅读模式
小女子是一个刚接触Arm的菜鸟,学习路途深感坚辛无比,碰到的一些问题烦恼还请各位大侠不吝赐教,小女子定会永远感恩在心~~~~~~~<br />我正在弄一个项目,需到用到串口中断,从串口接收外设发来的数据,但苦于对中断的不甚了解,以致茫然不知如何下手,望各位大侠帮帮忙!!~~~~~~~
soso 发表于 2007-8-8 10:54 | 显示全部楼层

通读S3C44B0的UART控制器这块。

&nbsp;&nbsp;&nbsp;重点看找出并理解UART&nbsp;CONTROL&nbsp;REGISTER,UART&nbsp;FIFO&nbsp;CONTROL&nbsp;REGISTER两个寄存器。如果采用中断方式的话,就是设置FIFO的触发级,比如RX接收时设置FIFO的触发级为四个,如果只要接收到四个就产生中断。<br />&nbsp;&nbsp;&nbsp;
wangkj 发表于 2007-8-8 13:39 | 显示全部楼层

是裸奔吧?

找51的参考,都差不多。应该有免费的开源的软件可借鉴
 楼主| sophia719 发表于 2007-8-8 14:21 | 显示全部楼层

谢谢各位好心的大侠们~~~~~

各位的发言给了我很大的启迪,可是。。。。。偶的基础有点差,是个不折不扣的菜鸟,希望大家再说详细一点,大家尽情发言吧!~~~~~期待ing......
wangkj 发表于 2007-8-8 14:25 | 显示全部楼层

.....................................

  
孤独泪 发表于 2007-8-8 14:27 | 显示全部楼层

用不着含泪跪求吧

  
soso 发表于 2007-8-8 15:09 | 显示全部楼层

看看代码吗

下面的程序是串口初始化程序,采用的是查寻与等待来接收字符方式,就是把FIFO&nbsp;disable,把它改成中断方式。然后设置一下中断入口子程序的地址。满足条件时进入中断程序处理接收到的字符。这个可要自己做了。<br />void&nbsp;Uart_Init(int&nbsp;mclk,int&nbsp;baud)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(mclk==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;mclk=MCLK;<br />&nbsp;&nbsp;&nbsp;&nbsp;rUFCON0=0x0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//FIFO&nbsp;disable<br />&nbsp;&nbsp;&nbsp;&nbsp;rUFCON1=0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;rUMCON0=0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;rUMCON1=0x0;<br />//UART0<br />&nbsp;&nbsp;&nbsp;&nbsp;rULCON0=0x3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Normal,No&nbsp;parity,1&nbsp;stop,8&nbsp;bit<br />//&nbsp;&nbsp;&nbsp;&nbsp;rULCON0=0x7;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Normal,No&nbsp;parity,2&nbsp;stop,8&nbsp;bit<br />&nbsp;&nbsp;&nbsp;&nbsp;rUCON0=0x245;&nbsp;&nbsp;&nbsp;&nbsp;//rx=edge,tx=level,disable&nbsp;timeout&nbsp;int.,enable&nbsp;rx&nbsp;error&nbsp;int.,normal,interrupt&nbsp;or&nbsp;polling<br />&nbsp;&nbsp;&nbsp;&nbsp;rUBRDIV0=(&nbsp;(int)(mclk/16./baud&nbsp;+&nbsp;0.5)&nbsp;-1&nbsp;);<br />//UART1<br />//&nbsp;&nbsp;&nbsp;&nbsp;rULCON1=0x7;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Normal,No&nbsp;parity,2&nbsp;stop,8&nbsp;bit<br />&nbsp;&nbsp;&nbsp;&nbsp;rULCON1=0x3;<br />&nbsp;&nbsp;&nbsp;&nbsp;rUCON1=0x245;<br />&nbsp;&nbsp;&nbsp;&nbsp;rUBRDIV1=(&nbsp;(int)(mclk/16./baud&nbsp;+&nbsp;0.5)&nbsp;-1&nbsp;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt100;i++);<br />}<br />
 楼主| sophia719 发表于 2007-8-8 18:20 | 显示全部楼层

高手啊!!!~~~~~

flyingzpy大侠,请问愿不愿私下继续点拨本菜鸟!?<br />&nbsp;&nbsp;请留下你的联系方式,不甚感激啊!!!<br />&nbsp;&nbsp;
wangkj 发表于 2007-8-8 18:36 | 显示全部楼层

小心恐龙

  
52lxs 发表于 2007-8-8 18:39 | 显示全部楼层

wangkj

有人好刻薄啊,呵呵
xwj 发表于 2007-8-8 19:14 | 显示全部楼层

恐龙不算可怕,比恐龙更可怕的是..

人妖
平常人 发表于 2007-8-8 22:10 | 显示全部楼层

技术论坛怎么变成科普学校了?

一句“菜鸟”变成了偷懒的借口,晕~~~~~
computer00 发表于 2007-8-9 00:01 | 显示全部楼层

多看几本书吧,慢慢来,别急

  
soso 发表于 2007-8-9 08:07 | 显示全部楼层

如果在北京,可以联系我。

&nbsp;&nbsp;&nbsp;&nbsp;我邮箱是zhangpy@yeah.net。<br />&nbsp;&nbsp;&nbsp;&nbsp;To&nbsp;Wangkj,我自己的公司已经完成迁址,在北师大南门的一个写字楼里租了一个小房间,这周我要去太原给人家培训,等我那里设施齐全了,网站发布了,找个时间,我们大家一起坐下聊聊。
wangkj 发表于 2007-8-9 08:27 | 显示全部楼层

我家在人大附近的万柳社区

有空多交流
soso 发表于 2007-8-9 09:08 | 显示全部楼层

收到

有空多多交流。
 楼主| sophia719 发表于 2007-8-9 09:13 | 显示全部楼层

谢谢大家!~~~

&nbsp;&nbsp;&nbsp;&nbsp;可是本人是在南昌就读的一名学生,而且马上要开学了,无法赶去北京面谈啊。。。。。<br />&nbsp;&nbsp;&nbsp;&nbsp;“平常人”的一席话说得我心里羞愧不已,大家的指点只能给我一个方向,关键的是还得自己多看几本书多花点时间,无论如何再次谢谢各位大侠的热心帮助,谢谢!!!~~~~~~~
cahwlx1982 发表于 2007-8-10 08:38 | 显示全部楼层

你在南昌?

&nbsp;可是本人是在南昌就读的一名学生,而且马上要开学了,无法赶去北京面谈啊。。。。。<br />你在南昌啊?什么学校的啊?<br />你可以到网上找一下UART的源代码啊!然后你再根据自己所需求改一下,关键是看懂数据手册哦.我也做这个东西,不难的!不要着急,自己多调试以下就会学会的!
wangharry 发表于 2007-8-10 09:05 | 显示全部楼层

需要看44b0手册

需要看44b0手册<br />uint32&nbsp;UART_Init(SERIAL_DEV&nbsp;*s)&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32&nbsp;&nbsp;&nbsp;&nbsp;rUARTBRD;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;UART&nbsp;interrupt&nbsp;off&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UARTRxIntOff(s-&gtcom_port);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UARTTxIntOff(s-&gtcom_port);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Initialize&nbsp;UART&nbsp;transmit&nbsp;&&nbsp;receive&nbsp;Queue&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TxQInit(s-&gtcom_port);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RxQInit(s-&gtcom_port);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;default&nbsp;baud&nbsp;rate&nbsp;will&nbsp;be&nbsp;set.&nbsp;sysconf.h&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rUARTBRD&nbsp;=&nbsp;U_BaudRate[BaudRateVal(s-&gtbaud_rate)].div;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(s-&gtcom_port)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Interrupt&nbsp;service&nbsp;routine&nbsp;setup&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysSetInterrupt(nUART1_TX_INT,&nbsp;Uart1TxLisr);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysSetInterrupt(nUART1_RX_ERR_INT,&nbsp;Uart1RxErrLisr);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UARTLCON1&nbsp;=&nbsp;s-&gtdata_bits|s-&gtstop_bits|s-&gtparity|s-&gtclk_sel;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UARTCONT1&nbsp;=&nbsp;s-&gtdata_mode;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UARTBRD1&nbsp;&nbsp;=&nbsp;rUARTBRD;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Interrupt&nbsp;service&nbsp;routine&nbsp;setup&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SysSetInterrupt(nUART0_TX_INT,&nbsp;Uart0TxLisr);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SysSetInterrupt(nUART0_RX_ERR_INT,&nbsp;Uart0RxErrLisr);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;UART&nbsp;mode,&nbsp;default&nbsp;baud&nbsp;rate&nbsp;setup&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UARTLCON0&nbsp;=&nbsp;s-&gtdata_bits|s-&gtstop_bits|s-&gtparity|s-&gtclk_sel;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UARTCONT0&nbsp;=&nbsp;s-&gtdata_mode;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UARTBRD0&nbsp;&nbsp;=&nbsp;rUARTBRD;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//UARTRxIntOn(s-&gtcom_port);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//UARTTxIntOn(s-&gtcom_port);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(SUCCESS);<br />}<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

1

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