原创 LPC2103的UART0通信(中断方式)

2010-5-8 00:55 4112 8 10 分类: MCU/ 嵌入式

本来已经放弃用中断方式做串口通信了,去做定时器0中断的实验。在做定时器中断的实验时,先用ADS,用周的模板和程序,显然没有任何问题,定时1s很准确。上程序https://static.assets-stash.eet-china.com/album/old-resources/2010/5/8/60cb5dbb-1d58-4b94-9465-a37f4e0c0a74.rar


之后用KEIL的模板,发现定时总是有错误,定1s的,但是设断点看发现只有0.8s,而且0.8s很准确,尝试多次,绝不是偶然的。发现周的模板PLL初始化是在target.c这个文件里的,我在KEIL中并没有做PLL初始化的工作,暗想那么Fpclk应该和外部晶振一样,但是调试发现,PLL已经有值,见图:



如果CLOCK是55.296MHz,那么按程序就是0.8s!所以怀疑KEIL的模板已经设定了PLL,百度之果然。

startup.s已经做了一部分基本资源的初始化。如果你不知道的话,那么认为main程序中没有初始化有些设置(很多特殊功能寄存器复位时是有初始值的),是不按照你的想象实现功能的。这很使人迷惑。其实startup.s已经给你做了某些事情。比如下面的程序中PLL,MAM他都给你做了设置,不再是复位状态了。我今天就认知到了这一点。因为我在设置LPC2214 UART0的波特率时一直实现不了,后来仿真时看到VPBDIV,PLLCFG,PLLCON都不是复位值了。多以按照复位值算出来的波特率怎么也对不上。所以startup.s一定要引起我们的注意,或者在main的开始要对我们必要的特殊功能寄存器按照我们自己的要求重新出事化一下。

在程序了加入PLL初始化,结果正确。https://static.assets-stash.eet-china.com/album/old-resources/2010/5/8/9c4e8e39-6092-4115-9fd8-aa39001cf3d8.rar

 

上面的一句话引起了我的注意,他是在设置UART0波特率的时候发现的问题,我的用中断方式串口通信不成功,可能就是波特率的问题!

仍用KEIL的模板,删除了上文中说的更改的地方,加入PLL的初始化,编译烧写,打开串口调试助手,发送,收到字符了!不容易啊。。。上程序https://static.assets-stash.eet-china.com/album/old-resources/2010/5/8/f17fe44b-e99f-416e-a197-0531c660cacd.rar

 

另外,如果还按上文说的在startu.s中加入那些东西,而且程序中加入

IRQEnable();     //使能IRQ 中断,

那么PLL的CLOCK将会在11.0592M和11.0592*5M之间变化,波特率也不稳定了,这就导致了通信的失败。具体原因不太明白,可能是PLL设定期间要禁止IRQ中断吧,可能。
PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户377235 2013-4-17 22:16

我在进行串口通信实验时遇到好多麻烦,调了好几天也没搞定,有时候就是进不了接受中断程序;还有我是用定时器发数据的,不知道为什么进入中断了,但是却收不到数据,跟踪U0IIR & 0x0E的值总是0x02,即是一直是发送中断标志,并没有接受中断标志(值为0x04),郁闷啊,不知道怎么改?

用户284278 2011-9-23 00:19

请问在ADS模板中如何修改?

用户222124 2009-6-14 12:27

呵呵,上面的PDF可以下载啊!

用户99739 2009-6-13 10:39

图片看不到
相关推荐阅读
用户1365269 2010-08-27 16:08
【WINCE】导出wince6.0的SDK 并且添加MFC支持
参照http://blog.csdn.net/happenhappy/archive/2010/05/28/5630930.aspx以及http://www.cnblogs.com/we-hjb/ar...
用户1365269 2010-08-27 16:05
【WINCE】利用VS2005创建WINCE 6.0 平台
转载加原创的文章 前两天刚刚接触WINCE,虽然早就久仰大名,但是一直没想学,最近FPGA遇到瓶颈了,所以先搞WINCE调节一下,毕竟天天钻quartus的牛角尖也是没有用的。很奇怪,国内这么多搞WI...
用户1365269 2010-05-08 01:04
LPC2103的UART0通信(中断方式)_有很大问题
本以为写过了查询方式,又有ZLG的代码,测试下应该没有什么问题,不过真的是问题多多啊,很多没有弄明白的地方。还是用KEIL FOR ARM,器件,环境选择如下  然后用KEIL给的模板,把ZLG 《深...
用户1365269 2010-04-30 11:17
LPC的UART0通信(查询方式)
        折腾了两天的板子,终于有些反应了。先用周立功提供的ADS的模板,改了周立功的程序只发送数据,没有数据输出。检查没发现什么问题,怀疑可能是模板的问题,用的是ARM Executable ...
用户1365269 2010-04-26 22:44
LPC2103小板到手
从淘宝买了一个LPC2103的小板作为入门使用,纯粹的ARM入门板。8K RAM,32K Flash,怎么也算是ARM7的成员了,呵呵。上图:(from 淘宝 红芯电子)ARM学习开始了~ ...
我要评论
2
8
关闭 站长推荐上一条 /3 下一条