历史上的今天
今天是:2024年11月27日(星期三)
2019年11月27日 | S3C2440串口代码_函数_初始化_发送Byte_发送string_Printf
2019-11-27 来源:eefocus
通常情况下都会将串口的初始化语句写进一个初始化函数Uart_Init()中:
1 void Uart_Init(int baud)
2 {
3 int i;
4 rUFCON0 = 0x0; //UART FIFO disable
5 rULCON0 = 0x3; //关闭红外传输模式而用Normal模式,No parity,1 stop,每帧8bits数据位
6 rUCON0 = 0x805; //先看[11:10]=10,UART时钟源为PCLK,那么[15:12]就没用了,置零,接收与发送的中断类型均为Pulse,禁止接收超时中断的产生,禁止接收错误中断的产生
7 //不采用loopback工作模式而采用normal模式,不发送break signal而采用normal transmit
8 rUBRDIV0=( (int)(50000000/16./baud+0.5) -1 ); //Baud rate divisior register 0
9 for(i=0;i<100;i++);//延时
10 }
串口发送字节Byte的函数Uart_SendByte():
1 void Uart_SendByte(int data)
2 {
3
4 if(data=='n')
5 {
6 while(!(rUTRSTAT0 & 0x2));
7
8 WrUTXH0('r');
9 }
10 while(!(rUTRSTAT0 & 0x2)); //Wait until THR is empty.
11
12 WrUTXH0(data);//一个宏
13 }
上面程序中的WrUTXH0()是一个宏,定义在另外一个文件中,形式为:
#define WrUTXH0(ch) (*(volatile unsigned char *)0x50000020)=(unsigned char)(ch)
所以WrUTXH0(data)的作用就相当于:
1 #define rUTXH0 (*(volatile unsigned *)0X50000020)
2 rUTXH0=data;
这两者功能是等价的。
串口发送字符串的函数Uart_SendString()实质就是不断调用Uart_SendByte()函数,将字符串一个字节一个字节的发出去:
1 void Uart_SendString(char *pt)
2 {
3 while(*pt)
4 Uart_SendByte(*pt++);
5 }
串口打印函数Uart_Printf()就是调用发送字符串的函数:
1 void Uart_Printf(char *fmt,...)
2 {
3 va_list ap;
4 char str[255];
5
6 va_start(ap,fmt);
7 vsprintf(str,fmt,ap);
8 Uart_SendString(str);
9 va_end(ap);
10 }
Uart_GetKey():
1 char Uart_GetKey(void)
2 {
3 if (rUTRSTAT0 & 0X01) //接收是否完毕 =1结束
4 return rURXH0;
5 else
6 return 0;
7 }
史海拾趣
|
和同事拜访客户,约的是下午2点,但1点45就到了,于是在大堂里逡巡一小会儿。 一个高高、瘦瘦的保安踱了过来,确认了我们不是搞破坏的。这时,同事不由抬了下靴子,跟我抱怨脚裸处太紧。这时保安很高兴地凑 ...… 查看全部问答> |
|
安装到最后,出现以下提示: eMbedded Visual C++ 4.0 SP4 Setup Wizard ended prematurely eMbedded Visual C++ 4.0 SP4 setup ended prematurely because of an error.Your system has not been modified. To install this program at a lat ...… 查看全部问答> |
|
刚接触ST的片子,,,通用定时器TIM2、3、5,作普通定时时:外部晶振4M,在定时器初始化中,设置TIM3的分频值为8192,然后启动计数,发现从启动至第一次中断这段时间分频值是无效的,中断开始生效……查阅手册知:新的预分频值在下一个周期时 ...… 查看全部问答> |
|
麻烦大虾帮我看下图上,上面是一个段式液晶COM口跟段的分布图,上面杂乱无章,用红,黄,蓝颜色圈起来的表示同类字符,分别代表一个或多个字符,有什么排列思路易于编程的?麻烦大虾们用图形跟语言表达下,小弟感激不尽。… 查看全部问答> |
|
第1页:前言:PC电源知多少 个人PC所采用的电源都是基于一种名为“开关模式”的技术,所以我们经常会将个人PC电源称之为——开关电源(Switching Mode Power Supplies,简称SMPS),它还有一个绰号——DC-DC转化器。本次文章我们将会为您解读 ...… 查看全部问答> |




