笔记一
void Uart_Printf(char *fmt,...)
{
va_list ap; //fmt之后的就是变参表
char string[256];
va_start(ap,fmt); //ap指向第一个变参
vsprintf(string,fmt,ap); //按照fmt格式拷贝ap到string,
Uart_SendString(string);
va_end(ap); //结束ap的使用
}
/***********************************************************
va_list ,一个变参列表
va_start、vsprintf、va_end 通常一起出现,特别是va_start和va_end是要同时出现的
*************************************************************/
笔记二
/***********************************************************
下面这节代码是S3C2440串口发送数据的,有两个知识点:
1、字符串的结束是先回车在换行
2、串口发送数据不用printf,往它对应的寄存器里填数据即可
***********************************************************/
void Uart_SendByte(int data)
{
if(whichUart==0)
{
if(data=='\n') //"\r"回车,先回车在换行"\r"
{
while(!(rUTRSTAT0 & 0x2));
// Delay(1); //because the slow response of hyper_terminal
WrUTXH0('\r'); //
}
while(!(rUTRSTAT0 & 0x2)); //Wait until THR is empty.
// Delay(1);
WrUTXH0(data);
}
...
}
笔记三
/***************************************************************
两个文件打开函数实例及原型,open是系统调用,fopen是库函数
****************************************************************/
serial_fp = fopen("/etc/tq2440_serial.cfg","r");
//库函数,打开
//FILE *fopen(const char *filename, const char *mode)
fd = open("/dev/leds", 0);
//系统调用: int open(const char *pathname, int flags)