[AVR单片机]

Atmel Stuido 6.2 关于sprintf 函数的使用问题

[复制链接]
1099|2
手机看帖
扫描二维码
随时随地手机跟帖
jrh200310|  楼主 | 2017-6-7 09:37 | 显示全部楼层 |阅读模式
在Atmel Studio 6.2中,想要使用sprintf 函数将浮点数转成字符串,但是没有结果
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>


unsigned char *bufsprint[30]={0};//格式化字符串数组缓存


void init_com1(void)//初始化串口
{
        UCSR1B=0X18;
        UCSR1C=0X06;//
        UBRR1H=0;
        UBRR1L=0X81;
}


void USART1_SendOneData(unsigned char data)//发送一个字节
{
  UDR1=data;
  while((UCSR1A&0X40)==0);
  UCSR1A=UCSR1A|0X40;                                 //清除标志位
}


void USART1_Sendcoscommand(unsigned char *p,unsigned char a) //发送指定字节
{
  unsigned int i=0;
  for(i=0;i<a;i++)
  {  
    USART1_SendOneData(*(p+i));
  }  
}



main(void)
{
       
        init_com1();
       
    while(1)
    {
       
        sprintf(*bufsprint,"%f",3.14559);
        USART1_Sendcoscommand(bufsprint,30);
       _delay_ms(1000);
                 
    }
               
}


打出来的值都是0,

1.jpg
2.jpg

相关帖子

jrh200310|  楼主 | 2017-6-7 09:37 | 显示全部楼层
编译器哪里设置有错吗

使用特权

评论回复
yzjgod| | 2017-6-8 16:02 | 显示全部楼层
AVR不能实现这个功能,没有浮点型的打印,需要自己手动变化,比如3位小数,需要乘以1000,自己再在中间加小数点。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

131

帖子

2

粉丝