ZigBee学习 CC2530之串口通信(重定向使用printf)

目录

printf介绍:

使用方法:

我们在使用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();
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值