3648|3

58

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

分享ARM7学习经验—通用异步接收器UART(五) [复制链接]

在介绍UART使用之前,先说下LPC2148还能使用串口0进行程序下载,下载工具都有以下几种,在网络上都能找到,个人感觉国外的FLASH MAGIC比较好用。下载地址为:http://www.flashmagictool.com/
然后我给大家介绍下KEIL自带的启动代码Startup.s,里面有关时钟的设置如图所示,当外部晶振为12M时,系统时钟60M,外设时钟15M

最后是UART0的编程:

第一步:设置管脚连接寄存器PINSEL0 = 0x00000005;开启RXD/TXD的功能。

第二步:设置UART0 线控制寄存器U0LCR,低2位是字长度选择,默认是005位字符长度,我们一般使用的是8位字符长度,所以设置为11。同时最高位DLAB=1,使能访问除数寄存器。

第三步:根据波特率和外设时钟设置除数寄存器U0DLM/U0DLL

最后:设置DLAB=0,禁止修改波特率

主要代码如下:

#include <LPC214X.H>

#include <stdio.h>

#define Fpclk  15000000

//Startup.s启动代码里面设置了系统设置60M,外设时钟15M

#define BAUD 9600

void Uart0_Init(void)

{

       unsigned int Fdiv;

       /* initialize the serial interface   */

       PINSEL0 = 0x00000005;           /* Enable RxD0 and TxD0                     */

       U0LCR = 0x83;                   /* 8 bits, no Parity, 1 Stop bit*/

       //DLAB=1,可以设置波特率

       Fdiv=(Fpclk/16)/BAUD;          

       U0DLM =Fdiv/256;

       U0DLL =Fdiv%256;                    

      

       U0LCR = 0x03;                   /* DLAB = 0     */

}

//重定义fputc函数

int fputc(int ch, FILE *f)

{     

       U0THR = ch;     

       while( (U0LSR&0x40)==0 );           // 等待数据发送完毕 

       return ch;

}

 

void delay (unsigned int i)

{                        /* Delay function */

       unsigned int n;

       while(i>1)

       {

              for(n=65535;n>1;n--);

              i--;

       }

}

int main(void)

{

       Uart0_Init();

       while(1)

       {

              puts("EEWORLD GOOD\r\n") ;

             delay(200);    

       }

}
此帖出自ARM技术论坛

最新回复

学习学习,,  详情 回复 发表于 2012-6-12 09:38
点赞 关注
 

回复
举报

27

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
多谢了,楼主辛苦了
此帖出自ARM技术论坛
 
个人签名ARM仿真器:Trace 32 Q群:31761308  刘先生
phone:18818994048 Email:aliens180@163.com
 
 

回复

136

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
学习了 。。。
此帖出自ARM技术论坛
 
 
 

回复

547

帖子

0

TA的资源

纯净的硅(初级)

4
 
学习学习,,
此帖出自ARM技术论坛
 
个人签名嵌入式培训www.51great.org
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表