您的位置:赣商财网 > 创新

ARM7单片机(学习ing)—(三)、UART—02

时间:2017-04-04 19:04   来源: 互联网    作者:夏冰  阅读量:17144   

总算是整好了~~

基于LPC2106的Proteus仿真UART0~~

重点就是频率的设置~~

写程序是小事~~

明白其中的PLL才是大事~~

后面的程序里面有详细的介绍~~

三、UART

三—(02)、向串口发送字符串(就是发送_Justin~~哈哈~~)

ARM7单片机(学习ing)—(三)、UART—02
ARM7单片机(学习ing)—(三)、UART—02

然后就是源代码:

MDK3_1.c

//------------------------------------------------------------------------------

//向串口发送字符串

//向串口UART0发送字符串“Designed by: _Justin"

//使用外部晶振12MHz;使用KEIL自带的启动代码Startup.s,里面有关时钟的设置(下边有图~~)

//PLL设置:倍频系数M=4,分频系数P=2

//当外部晶振频率为12MHz时,系统时钟60MHz,外设时钟15MHz

//顺便再介绍一下波特率的除数计算吧:

//UxDLM、UxDLL=Fpclk/(16*baud)

//UART基本操作如下:

//1)设置I/O连接到UART0

//2)设置串口波特率(U0DLM、U0DLL)

//3)设置穿口工作模式(U0LCR、U0FCR)

//4)发送或者接收数据(U0THR、U0RBR)

//5)检查串口状态字或者等待串口中断(U0LSR)

//------------------------------------------------------------------------------

#include"lpc210x.h"

#include"delay.h"

#include"macroandconst.h"

#include"bit.h"

//------------------------------------------------------------------------------

#defineFpclk 15000000

#define BAUD 9600

#define THRE 5 //线状态寄存器第五位,发送保持寄存器空~~

uchar const send_string[]="Designed by: _Justin";

//------------------------------------------------------------------------------

//端口初始化函数

void port_init()

{

PINSEL0=0x00000005; //设置I/O口连接到UART0

PINSEL1=0X00000000;

//由于当I/O口设置为第二引脚功能后,I/O口的输入输出就不受寄存器控制

//硬件自动控制~~

}

//------------------------------------------------------------------------------

//串口初始化函数——uart0_init()

//初始化串口0,设置为8位数据位,1位停止位,无奇偶校验,波特率为9600

void uart0_init()

{

uint32 Fdiv;

U0LCR=0X83; //DLAB=1,可以设置波特率;同时设置8位数据位

Fdiv=(Fpclk/16)/BAUD; //就是上面的波特率除数计算公式~~

U0DLM=Fdiv/256;

U0DLL=Fdiv%6;

U0LCR=0X03; //清零DLAB,禁止访问除数锁存~~

}

//------------------------------------------------------------------------------

//向串口发送字节函数——uart0_send_byte()

void uart0_send_byte(uchar dat)

{

U0THR=dat; //向发送器保持寄存器U0THR写入数据,它是UART0 Tx FIFO的最高字节

//它包含了Tx FIFO中最新的字符,为只写寄存器,DLAB必须为0

while(GET_BIT(U0LSR,6)==0X00); //等待数据发送完毕

}

//------------------------------------------------------------------------------

//uart0_send_string()

//向串口发送字符串函数

void uart0_send_string(uchar const *s)

{

while(1)

{

if(*s=='\0')

{

uart0_send_byte('\n'); //发送回车字符

break;

}

uart0_send_byte(*s); //发送字符串对应的数据

s++;

}

}

//------------------------------------------------------------------------------

//main

int main()

{

port_init();

uart0_init();

uart0_send_string(send_string);

while(1);

}

ARM7单片机(学习ing)—(三)、UART—02

郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。