目录
我们在使用CC2530下我们使用串口通讯发送一些数据的时候,总会有一些麻烦,比如发送整形数据,或者小数,在使用教材里面的串口发送总会出现一点问题。现在来介绍一个非常好用的东西,就是我们C语言里面用到printf。
printf介绍:
在我们学C语言的时候,使用最多的便是printf,使用它可以很方便的让我们打印出我们想要的数据。
使用方法:
主函数里面添加如下代码:
__near_func int putchar(int c)//printf输出重定向
{
UTX0IF = 0;
U0DBUF = (char)c;
while(UTX0IF == 0);
return(c);
}
添加使用printf的头文件了
#include "stdio.h"
添加完上面这些,再配置好串口的一些步骤就可以打印输出了,如果配置串口的步骤还不会的可以去看我之前的文章,里面都有详细的介绍。
实物演示:
主函数:
void main()
{
Uart_Init();
int num=9;
float num1=1.23;
printf("hello,hi\r\n");
while(1)
{
printf("int:%d\r\n",num);
printf("float:%.2lf\r\n",num1);
Delay500ms();
}
}
现象:
最后附上完整代码:
#include "iocc2530.h"
#include "stdio.h"
void Uart_Init()
{
CLKCONCMD&=~0x40;//设置系统时钟源为32Mhz
while(CLKCONSTA&0x40);//等待晶振稳定
CLKCONCMD&=~0x47;//设置系统主时钟频率为32Mhz
PERCFG=0x00;//配置外设控制寄存器,使用位置1
P0SEL=0x0C;
U0CSR|=0x80;
U0BAUD|=59;
U0GCR|=9;//19200;
UTX0IF=0;//发送标志位清零
}
__near_func int putchar(int c)//printf输出重定向
{
UTX0IF = 0;
U0DBUF = (char)c;
while(UTX0IF == 0);
return(c);
}
void Delay500ms() //@12.000MHz
{
unsigned char i, j, k;
i = 23;
j = 205;
k = 120;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
char Txdata[25];
void main()
{
Uart_Init();
int num=9;
float num1=1.23;
printf("hello,hi\r\n");
while(1)
{
printf("int:%d\r\n",num);
printf("float:%.2lf\r\n",num1);
Delay500ms();
}
}