串口通信之查询方式

今天下午做了串口实验,不过是用的查询方式做的。明天继续吧,用中断方式实现串口通信!哈哈,有点小的成就感!把代码贴出来吧,我用的是周立功的模板。
//串口查询通讯

#include "config.h"
#define UART_BPS 9600
//从上位机接受字符串并保存
void GetStrFromPC(uint8 *s,uint32 n)
{

 uint8 str;

 for(;n>0;n--)
 {
  while((U0LSR&0x01)==0);
  str=U0RBR;
  *s++=str;
 }
 
 //return
 
}
//想串口0发送数据
void PushDataToUART(uint8 *PushData)
{
 

 while(1)
 {
  if(*PushData=='/0')
   break;
  
  U0THR=*PushData++;
   
  while((U0LSR&0x40)==0); 
 }

}

void delay(uint32 n)
{
 uint32 i;
 for(;n>0;n--)
 for(i=0;i<5000;i++)
 ;
}
int main (void)
{// add user source code
 uint8 snd[32];
 uint16 f;
 
 PINSEL0=0x00000005;
 //串口初始化
 //设置波特率、数据格式(数据位 停止位 奇偶校验位)
 
 U0LCR=0x83;
 f=(Fpclk/16)/UART_BPS;
 U0DLM=f/256;
 U0DLL=f%256;
 U0LCR=0x03;
 //从上位机接受字符串并保存
 
 GetStrFromPC(snd,18);
 //想串口0发送数据
 
 delay(100);

 PushDataToUART(snd);
 
 delay(100);
    return 0;
}

总结今天下午这个实验。首先你要用串口uart0的话,应该把管脚功能寄存器也就是pinsel0选择成相应的uart0。第二部就开始初始化串口,设置波特率和数据格式。设置波特率时,当然要使能访问除数锁存(U0LCR=0x83;),用完后再禁止它。总的来说,要熟悉uart的一些寄存器和它们之间的关系。

你可能感兴趣的:(delay,dll,通讯,user)