Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1097541
  • 博文数量: 155
  • 博客积分: 2525
  • 博客等级: 大尉
  • 技术积分: 2242
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-05 20:52
文章分类

全部博文(155)

文章存档

2013年(1)

2012年(149)

2011年(5)

分类: 嵌入式

2012-05-16 16:21:09


点击(此处)折叠或打开

  1. #include "s3c24xx.h"
  2. #include "serial.h"

  3. #define TXD0READY (1<<2)
  4. #define RXD0READY (1)

  5. #define PCLK         50000000 //init.c中将PCLK设为50MHZ
  6. #define UART_CLK     PCLK
  7. #define UART_BAUD_RATE     115200
  8. #define UART_BRD    ((UART_CLK/(UART_BAUD_RATE*16))-1)


  9. void uart0_init(void)
  10. {
  11.     GPHCON |= 0xa0;
  12.     GPHUP = 0x0c;
  13.     
  14.     ULCON0 = 0x03; //8N1
  15.     UCON0 = 0x05; //查询方式,UART时钟源为PCLK
  16.     UFCON0 = 0x00; //不使用FIFO
  17.     UMCON0 = 0x00; //不使用流控
  18.     UBRDIV0 =UART_BRD;//波特率为115200

  19. }

  20. void putch(unsigned char c)
  21. {
  22.     /*wait,直到发送缓冲区中的数据已经全部发送出去*/
  23.     while(!(UTRSTAT0 & TXD0READY));

  24.     /*想UTXH0寄存器写入数据,UART会自动将它发送出去*/
  25.     UTXH0 = c;    
  26. }

  27. unsigned char getch(void)
  28. {
  29.     /*等待,直到接收缓冲区中有数据*/
  30.     while(!(UTRSTAT0 & RXD0READY));
  31.     
  32.     /*直接读取URXH0寄存器,即可获取接收到的数据*/
  33.     return URXH0;    
  34. }


  35. void uart_printf(char str[])
  36. {
  37.     char *p=str;
  38.     while(*p!='\0')
  39.     {
  40.      putch(*p);
  41.      p++;
  42.     }
  43.     putch('\r'); //回到行首
  44. }

阅读(5160) | 评论(2) | 转发(1) |
0

上一篇:几种常见的排序算法

下一篇:二、HTML标签

给主人留下些什么吧!~~

graylocus2012-05-18 15:29:15

147189385: 串口接收固定的字符串,如果字符串不对或者数据丢失就清0 怎么实现?.....
将接收到的字符串与固定字符串比较,不同就把程序里的接收缓冲清空。逻辑上是可行的

1471893852012-05-17 21:06:37

串口接收固定的字符串,如果字符串不对或者数据丢失就清0 怎么实现?