Leo Linuxhnrainll.blog.chinaunix.net
hnrainll
全部博文(354)
2010年(300)
2009年(54)
大鬼不动
叶绍琛
路沐堇
HoariNes
快乐的猪
6551130
zjt_pond
K__奕__
cynthia
格伯纳
Bsolar
葫芦娃的
分类: 嵌入式
2010-06-19 08:04:07
#include "config.h" void DelayNS(uint32 dly) { uint32 i; for(; dly > 0; dly--) for(i = 0; i < 50000; i ++); } #define UART_BPS 115200 void UART0_Init(void) { uint16 Fdiv; U0LCR = 0x83; //决定发送和接收的数据字符格式, 0x1000 0011 8位字符长度,1个停止位,禁止奇偶校验 Fdiv = (Fpclk / 16) / UART_BPS; U0DLM = Fdiv /256; U0DLL = Fdiv % 256; U0LCR = 0x03; //设制好波特率后,再关闭不让设制。 } uint8 UART0_GetByte(void) { uint8 rcv_dat; while((U0LSR & 0x01) == 0);//U0LSR 线状态寄存器,提供UART Rx,Tx模块的状态信息;这里是判断是否接收数据就绪。 rcv_dat = U0RBR;//接收缓存寄存器 return(rcv_dat); } void UART0_GetStr(uint8 *s,uint32 n) { for(;n > 0;n --) { *s++ = UART0_GetByte(); } } void UART0_SendByte(uint8 dat) { U0THR = dat; //U0THR 发送保持寄存器 while((U0LSR & 0x40) == 0); //发送器空,等U0THR为空。也就是等它发送完成。 } void UART0_SendStr(uint8 const *str) { while(1) { if(*str == '\0') break; UART0_SendByte(*str++); } } int main() { uint8 snd[32]; PINSEL0 = 0x00000005; UART0_Init(); while(1) { UART0_GetStr(snd,18); DelayNS(10); UART0_SendStr(snd); DelayNS(10); } return 0; }
上一篇:C语言实例5:位运算
下一篇:C语言实例6:移位操作
登录 注册