查看: 2350|回复: 4

大神们帮忙:AVR 串口 pritnf中的问题

[复制链接]
  • TA的每日心情
    擦汗
    2014-2-12 10:49
  • 签到天数: 150 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-8-15 10:53:50 | 显示全部楼层 |阅读模式
    分享到:
    发现在AVR串口中可以使用#include <stdio.h>,然后就可以使用类似于C的标准输入输出函数printf,scanf。
    但因为看不到这些函数的原型,我对这些函数有些小疑问。
    我用CVAVR自动生成的模板里有这样一个函数


    #pragma used+
    char getchar(void)
    {
    char data;
    while (rx_counter==0);
    data=rx_buffer[rx_rd_index++];
    #if RX_BUFFER_SIZE != 256
    if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
    #endif
    #asm("cli")
    --rx_counter;
    #asm("sei")
    return data;
    }
    #pragma used-
    #end


    它是定义了一个8位的缓冲区然后从缓冲区里取出相应的数据(通过接受中断把收到的数据存入缓冲区)。
    那使用这个函数就必须开接受中断了。
    那么printf和scanf的使用是不是也类似的开中断或者设置什么东西呢?
    麻烦大神给我简单的讲讲printf和scanf的一些基本原理,例如是否也通过UDR寄存器发送和收数据。
    好帮助我对串口通讯有更深的了解。
    十分感谢~
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-2 16:02
  • 签到天数: 257 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-8-15 10:59:57 | 显示全部楼层
    printf和scanf就是标准的输入输出C语句,其实在MCU上是无法直接用的,必须先初始化UART串口,并且要修改对象的操作函数,实现叫做 重定位 的功能,才可以把这个函数和UART口建立连接,才可以使用。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-7-28 09:42
  • 签到天数: 292 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-9-1 12:50:51 | 显示全部楼层
    哈哈哈 这么还是很简单的吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2014-2-12 10:49
  • 签到天数: 150 天

    连续签到: 1 天

    [LV.7]常住居民III

     楼主| 发表于 2013-9-2 09:49:41 | 显示全部楼层
    a20084666 发表于 2013-9-1 12:50
    哈哈哈 这么还是很简单的吗

    好吧.....
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2014-2-12 10:49
  • 签到天数: 150 天

    连续签到: 1 天

    [LV.7]常住居民III

     楼主| 发表于 2013-9-2 09:50:48 | 显示全部楼层
    a20084666 发表于 2013-9-1 12:50
    哈哈哈 这么还是很简单的吗

    好吧.....
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-21 01:19 , Processed in 0.149051 second(s), 22 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.